在Unity3d中按名称找不到对象-警告NRE

时间:2019-03-08 19:28:21

标签: c# unity3d

我试图使用未附加到对象本身的脚本将GameObject设置为活动状态。

GameObject SpecificGame = GameObject.Find("GameT" + gameItemSlot);
SpecificGame.SetActive(true);
SpecificGame.GetComponent<gamesTabItem>().gameID = gameID;

是的,变量gameItemSlotgameID正常工作。 该脚本应该将不活动的GameObject“ GameT1”设置为活动状态。尝试时出现以下错误:

NullReferenceException: Object reference not set to an instance of an object
gamesTab.GenerateTabItem (Int32 gameID) (at Assets/Scripts/gamesTab.cs:104)
System.Collections.Generic.List`1[System.Int32].ForEach (System.Action`1 action) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Collections.Generic/List.cs:361)
gamesTab.UpdateLibrary () (at Assets/Scripts/gamesTab.cs:46)
moneyTime.UpdateDisplay () (at Assets/Scripts/moneyTime.cs:42)
moneyTime.Start () (at Assets/Scripts/moneyTime.cs:31)

据我了解的其他问题和文档,该错误表明SpecificGame的设置不正确。 我是Unity和C#菜鸟,对此感到抱歉:p

1 个答案:

答案 0 :(得分:0)

您的Find方法很可能返回null。使用它之前,请检查是否为null。...

if(SpecificGame != null)
{
SpecificGame.SetActive(true);
//Etc
}

或者您可以使用安全的导航:

SpecificGame?.SetActive(true);