为了解脚本中这三个方法的调用顺序,写了一个代码如下:
<span style="font-family: Arial, Helvetica, sans-serif;">public class TestScriptOrder : MonoBehaviour</span><span style="font-family: Arial, Helvetica, sans-serif;"> {</span><span style="font-family: Arial, Helvetica, sans-serif;"> public int id;</span><span style="font-family: Arial, Helvetica, sans-serif;"> void OnEnable()</span><span style="font-family: Arial, Helvetica, sans-serif;"> {</span><span style="font-family: Arial, Helvetica, sans-serif;"> Debug.Log("enable"+id);</span><span style="font-family: Arial, Helvetica, sans-serif;"> }</span><span style="font-family: Arial, Helvetica, sans-serif;"> void Awake()</span><span style="font-family: Arial, Helvetica, sans-serif;"> {</span><span style="font-family: Arial, Helvetica, sans-serif;"> Debug.Log("awake"+id);</span><span style="font-family: Arial, Helvetica, sans-serif;"> }</span><span style="font-family: Arial, Helvetica, sans-serif;"> void Start () </span><span style="font-family: Arial, Helvetica, sans-serif;"> {</span><span style="font-family: Arial, Helvetica, sans-serif;"> Debug.Log("start"+id);</span><span style="font-family: Arial, Helvetica, sans-serif;"> }</span><span style="font-family: Arial, Helvetica, sans-serif;">}</span>
再在场景中建立两个物体,分别为两个物体添加脚本,如图所示
运行之后得到的结果为:
从结果可以看出,同一个脚本中的Awake和Enable是一起执行的,执行的顺序是先Awake后Enable,而所用的脚本的Start是一起执行的,而所有脚本的执行还遵循一个规律,先执行Hierachy最上面物体悬挂的脚本然后从上到下,而每个物体上面悬挂的脚本的执行顺序是从下到上执行的。