脚本:脚本是附加在游戏物体上,用于定义游戏对象行为的指令代码//.cs的文本文件
unity支持的三种高级语言:C#,JavaScript,Boo script(unity4以前支持,现在已经不支持了)
现在大部分都是用c#进行脚本的编写。
注意事项:
1.文件名必须与类名一致
2.写好的脚本必须附加到物体上才能执行
3.附加到游戏物体上的脚本类必须从MonoBehaviour类继承。
(所谓脚本就是一个类,当脚本往物体上挂的时候,就创建了一个对象,物体也是GameObject类的对象)
一.脚本的生命周期/Message/必然事件(具体见之前的笔记,这里只显示一些特殊情况的笔记)
字段->方法(一般脚本中不写构造函数,方法,因为编辑器中不显示)
这里补充几个小笔记:
1.当变量从private改为public时才可在unity中成为可以修改的变量。
2.当在VS中初始化给变量一个值,在unity中进行修改,最后调用时实际上为修改过后的值,在VS中实际上只起到一个初始化的作用。
3.特性
序列化字段[SerializeField]:在编辑器中显示私有变量
在编辑器中隐藏字段[HideInInspector]
设置范围[Range(范围)]
public class NewBehaviourScript1 : MonoBehaviour
{
// Start is called before the first frame update
[SerializeField]
private int a=15;
[HideInInspector]
public int b=15;
[Range(0,100)]
public int c=15;
}
4.当多个游戏物体挂载同一个脚本时,所有先执行Awake,之后再全部执行Start ........(他是个单线程过程),而物体先执行同一个方法时执行顺序不与Sense中的顺序有关,可以改动但一般不建议改动,如果要突出先后顺序建议放到不同方法中。
5.
private void Awake()
{
Debug.Log("awake");
}
private void Start()
{
Debug.Log("start");
}
在这段代码中如果我们先将游戏物体中的脚本警用掉,awake仍然先调用一次,start不调用,当我们再次启用脚本时,start才会被调用。
6.Awake:创建游戏对象--->立即执行(1次)
Start:创建游戏对象--->脚本启用--->执行(1次)
7.Awake可以判断满足某条件时启用脚本,因为必定调用且最先调用。
8.FixedUpdate适合让物体做物理运动,因为他是固定时间,他不会受到“渲染”影响。(每帧渲染物体量不同所以渲染时间不固定,也会因为机器性能不同渲染间隔也会不同,而FixedUpdate不会受到影响)
9.Update每次渲染时执行,适合用于处理游戏逻辑。
10.LateUpdate与Update同一帧执行,但是Update执行,适用于跟随逻辑。(相机与player的跟随逻辑)
11.当用输入事件(MouseDown等)方法时,必须使用碰撞器(Collider)组件。