这是我参与8月更文挑战的第3天,活动详情查看:8月更文挑战markdown
运行状态初始化:(也是执行顺序)编辑器
编辑器状态初始化:ide
实际应用:函数
private void Awake(){Instance = this;}
。Number
,而下次显示时使用是又须要Number = 1
,此时就能够写private void Awake(){Number = 1;}
。private void Start(){child1 = transform.GetChild(0);}
运行状态初始化示例: 搭建场景新建两个UI -> Image,一个做为背景,一个做为弹窗。新建脚本并挂载到弹窗Image上。post
脚本内容以下:测试
using UnityEngine;
public class LifeCycleFunction : MonoBehaviour
{
#region Initialization 初始化
public int Number = 1;
private void Awake()
{
Debug.Log("Awake 初始化时调用,在Start函数以前调用,...");
}
private void OnEnable()
{
Debug.Log("OnEnable 每次对象启用都会被调用...");
}
private void Reset()
{
Number = 0;
Debug.Log("Reset 编辑器模式下才可被调用...Number: " + Number);
}
private void Start()
{
Debug.Log("Start 仅当启用脚本实例时,才会在第一帧调用...");
}
#endregion
}
复制代码
这次运行结果展现了Awake
,OnEnable
,Start
的执行顺序,运行结果: ui
编辑器下的初始化: 1.脚本拖拽附加时自动执行this
2.点击Reset调用: 能够看到我手动Number设置为2,Reset后被重置为代码中写的0; spa
三个函数:3d
实际应用:
将以下脚本添加到上面新建的脚本中:(为了方便查看,将上面初始化的函数先注释掉)
#region 更新
// 固定时间调用,FixedUpdate一般比Update更频繁地调用
private void FixedUpdate()
{
Debug.Log("FixedUpdate 固定时间调用...");
}
// 每帧调用一次
private void Update()
{
Debug.Log("Update 每帧调用一次...");
}
// 在Update后,每帧调用一次
private void LateUpdate()
{
Debug.Log("LateUpdate 在Update后,每帧调用一次...");
}
#endregion
复制代码
运行后,能够看到结果以下:
三个函数:
实际应用:
1.游戏物体禁用触发OnDisable
2.游戏物体销毁时触发OnDisable
和OnDestroy
Unity 官方图解: