網站首頁 健康小知識 母嬰教育 起名 運動知識 職場理財 情感生活 綠色生活 遊戲數碼 美容 特色美食 愛好

常用解決辦法NullReferenceException:Object

欄目: 互聯網 / 發佈於: / 人氣:2.3W

本文介紹一些常見的導致NullReferenceException: Object reference not set to an instance of an object錯誤出現的原因,並給出相應的解決辦法

操作方法

(01)常用解決辦法1:NullReferenceException: Object reference not set to an instance of an object.沒有初始化物體的原因最主要的一個就是:物體本身的活性沒有激活(√被去掉了).你首先要查看,GameObject的活性是否在運行前就沒有激活,還是程序運行時你的某些腳本導致程序運行時將它的活性取消了,激活活性此問題迎刃而解.第一張圖為簡單的場景搭建,便於講解.

常用解決辦法NullReferenceException:Object
常用解決辦法NullReferenceException:Object 第2張

(02)常用解決辦法2:出現問題的物體的父物體、父父物體、父父父物體......沒有激活活性,因為一個父物體的活性取消的話,unity系統默認的就無法搜索到他的所有自物體了,即使這個時候你單獨打開自物體的屬性面板,發現子物體的活性小勾√還在,這個自物體依然是 Object reference not set to an instance of an object.

常用解決辦法NullReferenceException:Object 第3張
常用解決辦法NullReferenceException:Object 第4張

(03)常用解決辦法3:如果帶有Start(),Awake(),Update (),函數的腳本沒有賦給Hierarchy面板上的任何GameObject,那這三個函數的函數體全部不會被執行,自然也就會導致這個問題了.腳本在Project面板中建立後,如果你以為系統會自動執行它,你就大錯特錯了,必須要把它放到Hierarchy面板上才行.有兩種方法1.給一個已有的GameObject添加組件,即Add Component-"腳本的名字".2.新建一個空的GameObject,在空物體上添加組件,方法同上

常用解決辦法NullReferenceException:Object 第5張

(04)常用解決辦法4:在大一點的工程中,你會發現,一個工程中的絕大多數腳本是沒有Start(),Awake(),Update ()函數的,這些腳本或是也賦值給Hierarchy面板上的物體(這隻佔很少的一部分),或通過被其他腳本調用來實現作用(佔了絕大多數!!),如果這些腳本中出現Object reference not set to an instance of an object,你就要去看看源頭了,看看調用的腳本有沒有運行(也就是有沒有被放到Hierarchy面板上的某個物體上,而且這個腳本組件的活性√是否還在)

(05)常用解決辦法4:函數應用不當導致的錯誤.你自以為腳本邏輯正確(實際上也確實正確啊),的的確確是有給物體賦值,但就是報錯Object reference not set to an instance of an object.例如,objButton = antiate(("Prefab/FirstButton")) as GameObject;語法沒錯,函數調用正確,但是就是報錯,説objButton沒有賦初值,錯誤到底在哪呢!原來系統找不到加載路徑裏面的東西!,去看看你的資源放在哪裏了,是不是放在Assets-Resources文件夾下面了,注意文件名"Resources"絕對不能錯哦,因為這個函數就是找這個名字下面的資源啊!然後就在檢查一下路徑有沒有錯就OK了

(06)常用解決辦法4:真的是犯錯了,沒有賦初值,那就趕緊賦初值吧.介紹幾種簡單的賦初值方法:(1)public Vector3 vec3=new Vector3(0,0,0);(2)public string[] strs = new string[5];(3)int Int = 0;(4)float Flo = 0.0f;

常用解決辦法NullReferenceException:Object 第6張
Tags:解決辦法