一.假如把Unity运行的任务作为一场不限人数的篮球比赛来看的话,挂该脚本的物体假设为一个球队,它的脚本为队员,所以当前脚本其实为一个队员,那 Awake() OnEnable() Start()就对应上场前对应该球队的分配.
状态:1.队伍不参赛(SetActive(false)/activeSelf==false),即挂该脚本的物体不出现在场景中.
2.某个队员不上场(enabled==false),即该脚本组件不执行,此时脚本中的Update函数不再执行.
Active是对应物体;Enable对应组件,包括脚本.
(备注:缺席状态(SetActive(false)/activeSelf==false),不能直接用find搜索到,可以用标签搜索)
二.所以 Awake() OnEnable() Start()的执行时机为:
1.Awake:
条件:挂脚本的物体为activeSelf==true状态时调用,脚本的enabled==false时也执行.
次数:在物体activeSelf由false变为true时执行一次.
2.OnEnable:
条件:物体的activeSelf==true&&脚本的enabled==true状态时调用.
次数:两个状态,由至少有一个是false,变为双true,就会执行一次,所以可以多次执行.
3.Start:
条件:activeSelf==true&&脚本的enabled==true状态时调用.
次数:在Update第一次更新前,即enabled第一次为true时执行一次.
三.执行顺序
Awake->OnEnable->Start->Update,OnEnable也可能在Update后再次执行.
(参考文章链接:https://blog.csdn.net/qq_28849871/article/details/78137261)