持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情
脚本初始化
脚本挂载在游戏物体上 ,在游戏运行时会立即执行初始化方法Awake() ,接下来就会执行Start()方法
初始化脚本在整个生命周期只会执行一次
脚本销毁
游戏对象被删除就会执行onDestroy() 方法
脚本的禁用与启用
如图 脚本上的 checkBox ,勾上就会 调用 OnEnable()方法 ,反之 OnDisable()
脚本的 更新方法
- Update() 方法 会在游戏的每一帧调用一次 ,具体速度取决于电脑的配置
- LateUpdate() :Update ()方法执行完成之后就会被调用
- FixedUpdate(): 固定时间调用一次 默认为0.02秒一次 ,也可以手动修改
//第一次被调用
private void Awake()
{
Debug.Log("Awake is called");
}
//脚本被启用时被调用
private void OnEnable()
{
Debug.Log("move Script is Active");
}
// Start is called before the first frame update
//第一帧会被调用
void Start()
{
}
// Update is called once per frame
//每一帧被调用一次
void Update()
{
}
//update调用后会被调用
private void LateUpdate()
{
}
//每间隔固定的时间被调用一次
private void FixedUpdate()
{
// Debug.Log("fix Update");
}
private void OnDisable()
{
Debug.Log("script 非激活时调用");
}
private void OnDestroy()
{
Debug.Log("Script 被取消时调用");
}
多脚本的执行顺序
在游戏启动之后,Unity对所有游戏脚本进行处理
它会先处理所有脚本的Awake方法 让后start 以此类推
那么让哪个脚本的Awake 等等方法先执行呢?
点击脚本的Execution Order
在这里我们就可以定制脚本的执行顺序
一般情况下在Awake方法中完成数据的初始化工作
这样在Start 中访问数据的时候就不会出现 空指针异常
注:
避免在脚本中写空方法 ,因为unity需要遍历调用所有的脚本,在发反射调用每一个脚本的生命周期方法,然而放射是一个很费时的操作
参考:unity3D游戏开发(第二版)