Unity: “NullReferenceException: Object reference not set to an instance of an object”的可能解決方法

views

昨晚才成功的解決大量敵人的生成問題開心的趣睡覺後 一早起來卻又遇到”NullReferenceException: Object reference not set to an instance of an object”這個非人類語言所能理解的錯誤訊息 每次一遇到莫名奇妙的bug時 身體不由得會開始不舒服的開始冒汗 嚴重時胃部會開始抽痛 然後bug的難度(所需解決的時間) 會與負面情緒呈正比成長 有時還會出現乾脆放棄的黑暗想法

不過 由於好奇心與不服輸的心態 還是驅使我繼續前進… 說了廢話一堆 以下為可能的解決方式

照例 會先去Google一下 果不其然 有一堆人有此問題 但並沒有一個剛好是類似我的狀況 不過我還是歸納了一下 大家可能狀況的關鍵字:

  • null
  • GetComponent()
  • Clone
  • Awake(), Start(), Update()

其中最引起我注意的是Awake(), Start(), Update() 這位網友所提供(Click me)的 本以為應該就是這個了 但還是沒那麼幸運 決定用老方法: 先出去運動

…2小時後

在運動時不斷反覆思考以上幾個關鍵字 後來想到可能的問題出在哪

回到家 載入舊專案版本(舊版是沒有”NullReferenceException: Object reference not set to an instance of an object”此問題的)與新專案版本比對後 發覺最大的差異在此:

舊版

新版(將所有場景物件整理到一個空物件Level1底下 並產生成Prefab)

也就是說 新版是Prefab 舊版不是

人就是你殺的!!

所以將新版的層級關係恢復成舊版的樣子後就可解決此問題了!

據說 Unity在產生重複物件時 雖然表面上名字一樣 但實際上物件名稱後面會多了個”Clone”的字樣 (不知是否有點像是以前公司的程式人員告訴我說使用Phyre Station (for PS3) 開發遊戲時 在有些物件名稱後面要加上 -node的原因類似?)

不過 我並不能完全確定是Clone造成這樣的問題 我想Script應該有比我更正確的寫法來解決此問題

解決 bug後又是一陣神清氣爽 充滿希望啦!!

This entry was posted in Unity and tagged , by Mr.M. Bookmark the permalink.


2 thoughts on “Unity: “NullReferenceException: Object reference not set to an instance of an object”的可能解決方法

  1. A selection oof amazing games now are offered for all ages,
    with options thatt remarkably make interesting
    adventures close too to actuality. Thhe video games market sensible movement scenes thanks to their effectively-made graphics and designs.

  2. Hey there! I’ve been reading your web site for some time now and finally
    got the bravery to go ahead and give you a shout out from Houston Texas!

    Just wanted to tell you keep up the great job!

Leave a Reply

Your email address will not be published. Required fields are marked *