(搬运自我在的博客)
这几天通过Unity官网的的视频学习Unity脚本,观看的过程中做了记录。现在,整理了一下笔记,供自己以后和其他初学者参考。
Awake和Start
- Awake首先执行。通常用于建立组件间的引用,初始化。
- Start在Awake之后和第一次Update之前执行,并且要求脚本enabled。只执行一次。
Updte和FixedUpdate
- Update每帧一次,间隔不固定(受帧的处理时间影响),用于处理:
- 非物理物体的运动
- 获取输入
- 定时器
- FixedUpdate间隔固定,用于调整物理物体(刚体)。
enabled、setActive和Destroy
- enabled控制禁用和启用一个组件。禁用GameObject的renderer可以隐藏物体,但碰撞体仍然存在。
- setActive用于显示和隐藏一个物体。
- Destroy用于彻底销毁一个GameObject或组件。可以加一个数值表示delay。
Translate和Rotate
使用这两个方法控制物体运动。
Translate对应position:transform.Translate(Vector3); // Amount in each axis to move by
Rotate对应rotation:
transform.Rotate(Vector3, // Axis around which to rotate float) // amount to rotate by
LookAt
transform.LookAt(target);
用于移动物体Z轴使之对准目标物体。
将其绑定到相机上可以实现运动物体的跟踪。Lerp
用于平滑某种转变。
空间移动:
Vector3.Lerp(Vector3 from, // 起点。通常应设为当前坐标 Vector3 to, // 终点 float t); // 0~1之间的值。值越大,返回值越接近终点,移动也越快。
数值变换:
Mathf.Lerp(float from, float to, float t);
颜色渐变:
Color.Lerp(Color from, Color to, float t);
GetButton、GetKey和GetAxis
GetButton和GetKey的区别:
- 前者参数为字符串,可以通过设置面板更改字符串和对应按键的映射。
- 后者的参数为KeyCode对象。
GetButton/Up/Down的区别:
- Up按键弹起时为true,其他时为false;
- 长按时GetButton每帧都返回true,而Down只有第一帧。
GetAxis(axisName)通过获取某个轴的值来了解用户的输入。
- axisName是字符串,可以是“Horizontal”、“Vertical”。
- 返回值为0~1之间的值。
- 在设置中可以调节轴的参数,gravity控制返回0的速度,sensitivity控制离开0的速度。
OnMouseDown
鼠标在Collider或GUI组件上按下时调用该方法。
同类方法:- OnMouseDrag:按住不放
- OnMouseEnter:进入
- OnMouseExit:退出
- OnMouseOver:在上面
- OnMouseUp:释放
- OnMouseUpAsButton:按下和释放作用于同一个对象
Instantiate
创建prefab的副本,返回对象的引用。
使用时先用代码创建GameObject的变量,然后回到编辑器界面将prefab拖入变量中。Invoke
调用名叫method的方法:
Invoke(method, delay);
每隔time重复调用method方法:
InvokeRepeating(method, delay, time);
取消Invoke:
CancelInvoke();
取消名叫method的Invoke:
CancelInvoke(method);
Coroutine
利用了C#的yield
,来实现在多次Update中执行一个行为。
StartCoroutine(IEnumerator routine);
或者接受一个string参数表示方法的返回IEnumerator的方法的名字,后面跟着参数。
例:StartCoroutine(Func(param));StartCoroutine("Func", param);
停止一个Coroutine,用StopCoroutine。同样有两种形式。
Quaternion
用来表示旋转的类。讲了三个内容:
1)
LookRotation(Vector3 forward);
返回使物体转向forward方向的Quaternion。
2)
Slerp(Quaternion from, Quaternion to, float t);
旋转角度。相比Lerp,在中间时快,两头时慢。
3)
Quaternion.identity
是一个静态变量,表示没有旋转。