脚本生命周期
- 也叫做必然事件/消息Message
- 脚本是一个类(.cs文本文件)
- 附加到游戏物体中,定义游戏对象行为指令的代码
c#类
- 字段
- 属性(set get)在脚本中不显示,通常在脚本中 不写
- 构造函数
- 方法
脚本:
- 字段
- 方法
不能在子线程中访问主线程成员
初始阶段
Awake()
//执行时机:创建游戏对象--->立即执行-->执行1次
//作用:初始化
private void Awake()
{
Debug.Log("Awake"+Time.time)//output:Awake--0
}
start()
//先执行Awake再start,先执行所有Awake再所有start
//执行时机:创建游戏对象--->脚本启用才执行-->执行1次
//作用:初始化
private void Start()
{
Debug.Log("Start"+Time.time)//output:Start--e0
}
OnEnable()
//每当脚本对象启用时调用
private void OnEnable()
{
}
物理阶段
FixedUpdate()
//执行时机:每隔固定时间执行一次。默认0.02s
//适用于对物体做物理操作(移动、旋转....),**不会受到渲染影响**
private void FixedUpdate()
{//渲染时间不固定(每帧渲染物体量不同、机器性能不同)
}
游戏逻辑阶段
Update()
//执行时机:渲染帧执行,执行间隔不固定
//适用性:处理游戏逻辑,为了简单,移动的代码一般也放在这里
private void Update()
{
}
LateUpdate()
//延迟更新,与Update在同一帧里,跟在LateUpdate后面执行
LateUpdate()
{
}
输入事件
场景渲染
- OnBecameVisible当可见
当Mesh Renderer在任何相机上可见时调用 - OnBecameInvisible当不可见
当Mesh Renderer在任何相机上都不可见时调用
结束阶段
- OnDisable当不可用
对象变为不可用或附属游戏对象非激活状态时此函数被调用 - OnDestroy当销毁
当脚本销毁或附属的游戏对象被销毁时被调用 - OnApplicationQuit当程序结束:
应用程序退出时被调用