在检查器中分配的Unity值在代码中引发空值

时间:2019-02-14 20:47:22

标签: c# unity3d

我是Unity的初学者,遇到了一个问题,我无法在任何一块板上找到答案。创建一个非常基本的Unity C#脚本,我的Awake()函数中包含以下代码行:

Assert.IsNotNull(sfxJump);
Assert.IsNotNull(sfxDeath);
Assert.IsNotNull(sfxCoin);

第三个断言“ 即使在检查员中设置了硬币Assert.IsNotNull(sfxCoin)null也将以AudioClip的形式抛出:

检查器脚本值:

enter image description here

但是-这是令我感到困惑的部分-由于某些原因,{{1}在同一脚本中被{{1}调用时{strong>不是 sfxCoin }}常规

因此,看来Unity确实向代码注册了对象-最终-但断言因初始的nullOnCollisionEnter()Awake()方法而失败。

这只发生在Start()上。 Update()sfxCoin没有这个问题。

任何帮助将不胜感激

整个脚本如下:

sfxJump

1 个答案:

答案 0 :(得分:0)

对不起,我发现了问题所在。

游戏对象的第二个实例也使用没有设置sfxCoin的相同脚本。它隐藏在层次结构中的某个节点下,因此我没有看到它。

就像我说的那样,我是一个初学者。