作者: | 来源:互联网 | 2023-09-25 16:52
在看项目的时候发现了一个问题,一个游戏物体通过脚本添加了另一个脚本,那新添加的脚本的执行顺序是怎么样的呢?笔者做了以下的实验,在场景中添加了一个空的游戏物体,新建两个脚本:FirstScri
在看项目的时候发现了一个问题,一个游戏物体通过脚本添加了另一个脚本,那新添加的脚本的执行顺序是怎么样的呢?
笔者做了以下的实验,在场景中添加了一个空的游戏物体,新建两个脚本:FirstScript.cs和SecondScript.cs,代码如下:
FirstScript.cs:
using UnityEngine;
using System.Collections;
public class FirstScript : MonoBehaviour {
// Use this for initialization
void Start ()
{
FirstPrint();
test();
}
void FirstPrint()
{
Debug.Log("FristPrintFun");
gameObject.AddComponent();
}
void test()
{
Debug.Log("TestFun");
}
// Update is called once per frame
void Update ()
{
Debug.Log("FirstScript Update");
}
}
SecondScript.cs:
using UnityEngine;
using System.Collections;
public class SecondScript : MonoBehaviour {
void Awake()
{
Debug.Log("SecondScriptAwake");
}
// Use this for initialization
void Start ()
{
Debug.Log("SecondScript");
}
// Update is called once per frame
void Update ()
{
Debug.Log("SecondScript Update");
}
}
然后把FirstScript挂到前面新建的游戏对象上,运行之后,Console打印的结果如下
通过打印可知,新添加的脚本SecondScript.cs会立即执行它Awake函数,然后等FirstScript.cs的Start函数执行完之后,就执行SecondScript.cs的Start函数,接着执行FirstScript.cs的Update函数,接着就是SecondScript.cs的Update函数。