簡體   English   中英

在Unity 5 C#中收到錯誤消息MissingReferenceException

[英]Getting error saying MissingReferenceException in unity 5 c#

在我的統一汽車游戲項目中,我有四輛汽車(一輛球員汽車) ,分別帶有四個指示器(一個主要指示器) 指示器在update function上垂直向上移動,並且每個指示器以隨機速度移動。 在汽車的情況下, 玩家汽車不會上下移動,而只能由用戶左右移動 同樣,其他汽車也不會向左,向右,向前,向后移動。 而是另一輛車顯示前進和后退動畫,其指示器之間有差異(四個指示器,指示器表示三個指示器,該指示器引用除玩家汽車之外的三輛汽車)和主指示器位置(主要指示器是用於玩家汽車的參考)。

我有兩個場景,一個用於用戶界面 (包含播放按鈕,退出按鈕等)。 還有另一個玩游戲的場景。

當我單擊“ 玩游戲”按鈕時,它將轉到游戲場景 ,並且賽車游戲開始沒有錯誤。 游戲完成后,會自動加載用戶界面場景,顯示“重播游戲”,“退出游戲”。 在這種情況下,如果我單擊“重播游戲”按鈕,則會打開游戲場景,並且指示器開始移動,但是汽車相對於指示器的移動卻沒有移動(不顯示動畫)。 錯誤發生在這里說

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.

在錯誤期間,我檢查了游戲對象car,它包含movecar腳本,但仍然存在相同的錯誤。 由於腳本在第一步中運行良好,因此這里沒有附加代碼。 任何幫助將不勝感激。 我已經在這個問題上停了很多天。

在將場景加載到重播按鈕上之前,添加以下代碼行: DontDestroyOnLoad(playerCarObjectHere);

我在游戲中使用了靜態變量和事件。 在第一場比賽中,游戲運行正常,但是當我重新啟動/重播游戲時,出現錯誤提示MissingReferenceException 只要程序運行,靜態變量就保持不變,即使我重新啟動/重玩游戲也是如此。 因此,我創建了一個在游戲加載期間為靜態變量分配null的函數。

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
    }
}

最后,我能夠解決此錯誤。 因此,在使用靜態變量時我們需要非常小心,因為它的值在整個程序中都是相同的。 同樣在統一的情況下,即使重新加載場景,其(靜態變量)值也不會重置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM