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

昨晚才成功的解決大量敵人的生成問題開心的趣睡覺後 一早起來卻又遇到”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應該有比我更正確的寫法來解決此問題

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity中,NullReferenceException: Object reference not set to an instance of an object 是一个常见的错误。这个错误通常是由于代码中引用了空对象或者未初始化的对象而导致的。其中一种可能的情况是,如果一个物体的父物体没有激活,那么其所有子物体是找不到的。同样地,在运行时使用GameObject.Find()函数全局查找GameObject时,也需要注意父物体激活的情况。 当出现这个错误时,我们需要仔细检查代码中的每一个可能为空的值。常见的问题包括:代码中引用了Unity中不存在的物体或者挂载错了组件;在代码中声明了变量但是没有赋值;在代码中规定了物体的作用,但是忘记在Unity中进行相应的绑定;代码中的命名与Unity中的命名不一致等等。 另外,有时候使用字典时也可能出现报空的情况。需要注意检查字典是否为空或者是否正确定义了键值对。 在出现报空错误后,我们应该仔细检查代码中的空值和Unity中的设置是否有问题。可以根据错误提示中的代码名称与行数来定位问题所在。需要相信计算机不会骗人,只要耐心细致地找问题,就能决报空错误。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【Unity】出现NullReferenceException:Object reference not set to an instance of an object.的原因总结](https://blog.csdn.net/qq_41084756/article/details/126648829)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Unity报错NullReferenceException: Object reference not set to an instance of an object](https://blog.csdn.net/the_sun___/article/details/113245952)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值