我是靠谱客的博主 优雅大门,最近开发中收集的这篇文章主要介绍重零开始的Unity学习--脚本开发 day01,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

组件

Transform

特点:只要是游戏对象,必须有这个组件,有且只有一个

功能:游戏对象的变换 包含父子关系内容

坐标: 1.世界坐标 以场景原点为原点

2.相对坐标 相对于父物体

旋转:世界旋转 本地旋转

在面板上:1.显示相对于父物体的变换

2.子物体世界坐标 = 子物体本地坐标 + 夫物体世界坐标

3.子物体世界旋转 = 子物体本地旋转 + 夫物体世界旋转

4.子物体世界缩放 = 子物体本地缩放 * 夫物体世界缩放

方法

【坐标】

transform.position 世界坐标

transform.localposition 本地坐标

【欧拉角】

transoform.eulerAngles 世界欧拉角

transform.localEulerAngles 本地欧拉角

【四元数】

transform.rotation 世界四元数

transform.localRotation 本地四元数

【缩放】

transform.localScale 本地坐标

【自转】

transform.Rotate(new Vector3(2,0,0));

【绕转】

transform.RotateAround(绕转点,绕某个轴,绕转的度数);

【让自己朝自己的方向移动】

前方:transform.forward

上方:transform.up

右方:transform.right

【看向某个目标】

transform.LookAt("游戏对象".transform);

【获取或设置父对象】-- 没有父对象 -->parent 为 NULL

transform.parent

transform.SetParent()

【获取根对象】 -- 没有根对象-->root为自己

transform.root

【获取当前对象的子对象个数】

transform.childCount

【获取当前对象的子对象】

Transform child0 = transform.GetChild(0);

【Find】 --- 可以找到非激活对象

transform.Find(" ");

transform.Find(" / ");

GameObject

静态方法

GameObject.Find(" ");

GameObject.FindWithTag(" ");

GameObject.FindGameObjectsWithTag(" ");

成员方法

gameObject.activeSelf:是否存活

gameObject.setActive(true/false); 设置游戏对象的激活状态

获取组件

gameObject.AddComponent<组件>();

gameObject.GetComponent<组件>();

Vector3

成员方法

Vector3 vector = new Vector3(1,1,1);

vector.x = 3;

【返回一个向量的标准化向量】

vector.normalized;

【使当前向量变成一个单位向量】

vector.Normalize();

【向量的模】

vector.magnitude

【模的平方】

vector.sqrMagnitude;

静态方法

Vector3.forward(0,0,1)

Vector3.up (0,1,0)

Vector3.right (1,0,0)

Vector3.zero (0,0,0)

Vector3.one (1,1,1)

【求两点的距离】

(float)Vector3.Distance(Vector3,Vector3);

【求两个向量的夹角】

(float)Vector3.Angle(Vector3,Vector3);

【叉乘】 -- 判断左右

(Vector3)Vector3.Cross(Vector3,Vector3);

【点乘】 -- 判断前后

(float)Vector3.Dot(Vector3,Vector3)

【插值】

(Vector3)Vector3.Lerp(Vector3,Vector3,float)

Quaternion

【一个物体的空旋转】

Quaternion.identity

【让物体转向Vector3】

transform.rotation = Quaternion.LookRotation(Vector3);

【插值】

Quternion.Lerp(Vector3,Vector3,float);

Time

【上一帧结束到当前帧开始】

Time.deltaTime

【设置FixedUpdate时间】

Time.fixedDeltaTime

【从游戏开始,到现在的时间】

Time.time

【时间缩放】-- 影响重力

Time.timeScale = 2;

Mathf

【绝对值】

Mathf.Abs(-1);

【插值】 -- 数字插值

Mathf.Lerp()

【限定值】

Mathf.Clamp(3.5f , 5 , 8.0f) (3.5f - 8.0f 之间)

Mathf.Clamp01(float) (0 - 1之间)

脚本

如果未出现解决方案,在Unity中Edit中Preference中External Tools中选择External Script Editor选择打开方式

Runtime 运行时执行

Editor 插件,未运行时执行

脚本组件--可放到物件身上

1.继承 MonoBehaviour

2.类的名字要相同

3.不能和系统类名相同

非组件脚本--普通类

1.不继承 MonoBehaviour

2.可以和脚本名不一致

生命周期--回调函数

void Awake() 游戏开始时执行一次 不论这个脚本可用不可用都执行

void OnEnable() 可用时执行

void Start() 游戏开始后调用一次

void FixedUpdate() 每隔一定的时间间隔执行一次,默认0.2s执行一次

void Update() 游戏开始后每帧调用一次

void LateUpdate() 延迟执行

void OnGUI() 用于渲染旧版UI,每帧大约执行两次

void OnDisable() 当脚本组件设为不可用时,调用一次

void OnDestory() 剔除脚本

打印

Debug.log(" "); Unity引擎--推荐

print MonoBehaviour类中才可用

划线

DrawLine(Vector3 start,Vector3 end);

DrawRay(Vector3 start,Vector3 end);

实现功能三部曲

1.找到要操作的游戏对象或它的组件

2.找到功能所对应的组件

3.设置组件中的属性,或调用组件提供的方法,从而实现功能

对象

new一个对象

GameObject obj = new GameObject("对象名");

找到当前游戏对象

this.gameObject;

找其他游戏对象

通过游戏名找对象

GameObject.Find("对象名");

缺点

1.出现重名可能找不到对象了

2.对象太多,太消耗性能

通过标签找对象

GameObject.FindWithTag("标签")

缺点

1.出现重名可能找不到对象了

优点

1.不太消耗性能

找一堆对象

GameObject [] objs = GameObject.FindGameObjectsWithTag("标签");

tips

按住V贴边

this.name

this.tag

this.enable

this.transform

this.gameObject

变量外部显示:

public float rotateSpeed = 0.0f; // 只在编译初始化界面一次

public GameObject obj;

实现拖尾效果

Trail Renderer

只要不是三个浮点型的都能用Vector3

【插值移动】

trasform.position = Vector3(trasform.position,Vector3,%);

最后

以上就是优雅大门为你收集整理的重零开始的Unity学习--脚本开发 day01的全部内容,希望文章能够帮你解决重零开始的Unity学习--脚本开发 day01所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(191)

评论列表共有 0 条评论

立即
投稿
返回
顶部