在unity 5中获得错误说MissingReferenceException#c

时间:2016-09-13 03:24:54

标签: c# unity3d

在我的团结车游戏项目中,我有四辆车(一辆车),各自有四个指标(一个主要指标)。指标在update function上垂直向上移动,每个指标随机移动。在汽车的情况下,玩家汽车不会向上和向下移动,它只会由用户左右移动。同样,其他车也不会向左,向右,向前,向后移动。 相反其他车显示前后移动动画与指标之间的差异(有四个指标,指标指三个指标,参考除了玩家车外的三辆车)和主要指标位置(主要指标是玩家车的参考) )。

我有两个场景,一个用于用户界面(包含播放按钮,退出按钮等)。 游戏的另一个场景。

当我点击玩游戏按钮,然后进入游戏场景,赛车游戏开始没有错误。游戏完成后,用户界面场景自动加载说“重播游戏"”,#34;退出游戏"。在这种情况下,如果我点击"重播游戏"按钮,游戏场景打开并且指示器开始移动但是汽车不会相对于指示器的移动而移动(不显示动画)。这里出现的错误是

Missing Reference Exception: The object of type moveCar(it is script attached to the car object) has been destroyed but you are still trying to access it.Your script should either check if it is null or you should not destroy the object.

在错误期间,我检查游戏对象车并且它包含movecar脚本,但仍然存在相同的错误。由于脚本在第一步工作正常,所以我没有附加代码。任何帮助将不胜感激。我在这个问题上停了很多天。

2 个答案:

答案 0 :(得分:0)

在重播按钮上加载场景之前,请添加以下代码行DontDestroyOnLoad(playerCarObjectHere);

答案 1 :(得分:0)

我在游戏中使用了静态变量和事件。在第一次游戏中,游戏运行良好,但是当我重新启动/重放游戏时,我收到错误,指出 MissingReferenceException 。由于静态变量在程序运行时保持不变,即使我重新启动/重放游戏。所以我创建了一个函数,在游戏加载期间为静态变量赋值。

public class moveCar : MonoBehaviour
{
    public delegate void RCarIdle(); 
    public static event RCarIdle carIdle;   
    public delegate void StepForward();      
    public static event StepForward EstepForward;

    void Start()
    {
        ......
        ......
        makeNull();
    }   

    void makeNull()
    {  
        carIdle=null;    
        EstepForward=null;  
        //similarly other static variable are set to null or a default/initial value
    }
}

最后,我能够解决这个错误。因此,在使用静态变量时我们需要非常小心,因为它的值在整个程序中都是相同的。如果也是单位,即使重新加载场景,其(静态变量)值也不会重置。