引子
有时候,设置脚本的执行顺序还是很有必要的。我曾经遇到过这样的情况,中午去吃饭的时候程序还跑的好好的,到下午回来的时候却出现空对象异常的情况,后来我找到了错误,原来是代码的执行顺序的问题。
示例
好了,废话不说了,看步骤吧!
步骤:
- 在unity场景中建立3个空的游戏物体,名称分别为:Script1,Script2,Script3
- 建立三个脚本,脚本名称为Script1.cs,Script2.cs,Script3.cs,对应编辑脚本如下:
- Script1.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Script1 : MonoBehaviour
{
void Start ()
{
Debug.Log("Script1执行!");
}
void Update ()
{
}
}
- Script2.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Script2 : MonoBehaviour
{
void Start ()
{
Debug.Log("Script2执行!");
}
void Update ()
{
}
}
- Script3.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Script3 : MonoBehaviour
{
void Start ()
{
Debug.Log("Script3执行!");
}
void Update ()
{
}
}
- 分别为空游戏物体Script1,Script2,Script3对应添加脚本Script1.cs,Script2.cs,Script3.cs,注意,这时我添加脚本的顺序是,先为Script2添加脚本Script2.cs,再为Script1添加脚本Script1.cs,最后为Script3添加脚本Script3.cs。
最后打印输出的结果如下图所示:
从上图可以得出的结论是:后添加的脚本先执行 - 设置脚本的执行顺序,点中其中的一个脚本,然后点击右上角的Execution Order…按钮,如下图所示:
在出现的面板中点击+号,选择要设置顺序的脚本,如下图所示:
设置Script1、Script2、Script3的Default Time值为100、200、300,注意Default Time值越小,越先执行,最后运行打印输出的结果如下图所示:
原文链接
原文链接:https://blog.csdn.net/zxy13826134783/article/details/83550427
个人看法
这个设置虽然解决了,MONO脚本运行顺序不可控的问题,但个人觉得,这也只对少量MONO脚本的项目比较好用;如果是在那种有着众多的MONO脚本的时候,这种逻辑思路的整理,并一个个对应到相应的脚本中,再对其进行排序的话,会是一项非常繁琐的工作。所以我并不经常使用,这只是记录一下这个设置。