Unity 單例與ScenceManager,LoadScenc遇到的一個大坑

先貼錯誤:MissingReferenceException: The object of type 'GameObject' has been destroyed but you are still trying to access it (ERROR)

GameManager爲唯一單一模式(此處不講單例的實現)

在貼部分代碼(都在Start中):

 

1.DontDestroyOnLoad引起的錯誤

場景層次結構如下:

當我從A場景加載到含該單例的B場景,第一次正常運行,再一次返回到A,跳轉到B,GameManager並沒有在DontDestroyOnLoad列表顯示,並且在使用時報以上錯誤。(坑了我很久)

解決方法:將單例作爲單獨一個物體。由於在切換場景 的時候將其父物體刪除了。

2.

由於在單例內部註冊的監聽沒有取消引起的:如上,我在語音識別有兩個監聽,使用時總是報MissingReferenceException(報錯有時候或讓你懵逼)

解決方法:在離開B場景時,將監聽全部清空,進入B場景後重新添加引用即可

如果你還有別的問題,可以直接聯繫我。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章