C#中对象的实例

时间:2015-01-24 00:32:13

标签: c# unity3d

我正在尝试制作游戏中的错误。我收到以下错误。

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;

2 个答案:

答案 0 :(得分:0)

必须是因为GameObject.FindWithTag("Book001Canvas")返回null, 然后.GetComponent("Canvas");抛出异常。

答案 1 :(得分:0)

来自GameObject.FindWithTag文档:

  

<强>描述

     

返回一个标记为tag的活动GameObject。如果没有,则返回null   找到GameObject。

所以你可能想尝试捕捉错误:

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
}