上一篇测试了生成顺序对执行顺序的影响,链接:LINK
这篇主要测试一下Awake,OnEnable,Start三个常用消息的循环顺序
先上一个最简单的打印测试代码
void Awake() { Debug.Log("Awake" + name); } void OnEnable() { Debug.Log("OnEnable" + name); } void Start() { Debug.Log("Start" + name); }
Print Message
测试结果为Awake和OnEnable在第一次循环中,Start在第二次循环中
然后测试一下动态创建时的顺序
public TMP template; void Start() { var go = Instantiate(template.gameObject); print("--Creater Modify--"); go.SetActive(true); }
Dynamic Create
Awake和OnEnable优先被调用,连在此之前调用初始化的机会都没有。
不过也有解决方法,将Prefab保存为非激活状态,并在初始化后激活即可:
时间: 2024-11-11 09:57:26