使用Awake中的Find进行缓存脚本引用有效,但在Start中却没有

时间:2018-11-01 11:20:35

标签: c# unity3d

我需要在Unity中缓存对另一个脚本的引用。

我没搞清楚为什么在下面的代码中,在Start()中缓存引用不起作用(我得到了NullReferenceException),而在Awake()中缓存引用却起作用。

据我了解,Start()被称为AFTER Awake()。但是从我看到Start()被调用时的对象来看,AnotherScript还不存在,而当Awake()被调用时它退出了。

我想念什么?

./configure --enable...

adasdad

1 个答案:

答案 0 :(得分:0)

显然,AnotherScript游戏对象在您初次寻找时不存在。或已关闭。或者只是其AnotherScript组件尚未附加。如果您动态创建它,则可能会发生。

尝试调查实际的时间轴:在此脚本和Debug.Log("i am ready " + name, gameObject);的{​​{1}}和Awake()方法中放入一些Start()

您还可以在编辑>项目设置>脚本执行顺序中明确地重新排列脚本的执行顺序,前提是您确定脚本在创建/设置的第三个脚本之前开始AnotherScript开始了。