2015-01-24 6 views
-3

Я встречаюсь с ошибкой в ​​игре, которую я пытаюсь сделать. Я получаю следующую ошибку.Экземпляр объекта в C#

NullReferenceException: Object reference not set to an instance of an object 

Этот же код отлично работает в одном из моих других скриптов, но в этом он продолжает эту ошибку. Я думал, что назначил его экземпляру объекта, но, думаю, нет.

UnityEngine.Component book001GUIOld = GameObject.FindWithTag("Book001Canvas").GetComponent("Canvas"); 
UnityEngine.Behaviour book001GUI = (UnityEngine.Behaviour)book001GUIOld; 

Любые предложения? Дайте мне знать, если вам нужно больше кода. Я тоже пробовал.

UnityEngine.Behaviour book001GUI = GameObject.FindWithTag("Book001Canvas").GetComponent("Canvas") as behaviour; 
+1

просто найти самый нижний стек которого объект является нулевым, но оно не должно быть. ..NullReference - одна из самых простых ошибок для отладки. – Steve

ответ

0

Из документации GameObject.FindWithTag:

Description

Returns one active GameObject tagged tag . Returns null if no GameObject was found.

Таким образом, вы можете попытаться поймать ошибку:

var book001Canvas = GameObject.FindWithTag("Book001Canvas"); 

if (book001Canvass != null) 
{ 
    UnityEngine.Component book001GUIOld = book001Canvas.GetComponent("Canvas"); 
} 
else 
{ 
    // Recover from not finding an object with the Book001Canvas tag 
} 
0

Должно быть, потому что GameObject.FindWithTag("Book001Canvas") возвращается нуль, то .GetComponent("Canvas"); бросает исключение.

+0

GameObject кажется статическим классом и .FindWithTag статическим методом. нет? – Ecnerwal

+0

Ах, я думаю, ты прав. –

Смежные вопросы