unity c# - NullReferenceException:未将对象引用设置为对象的实例

boa*_*ane 2 c# unity-game-engine

我和我有一段error时间。我在我的命名中创建了两个对象,但显然我的脚本找不到它们。为什么我写的还不够?我得到的所有内容都没有设置为对象的实例,但我不明白为什么当我的层次结构中有一个对象时我需要创建这个对象的实例。我对 unity 还是比较陌生,并且无法通过搜索找到任何真正的解释性答案,并且 unity 教程并不是很有帮助,因为我确定它只是一个关于runtimeimagetexthierarchyerrorObject referencec#c#

private Text serverInfoText;
private GameObject serverInfoImage;

void Awake()
{
    serverInfoImage = GameObject.Find ("ServerInfoImage");
    serverInfoImage.SetActive (false);
    serverInfoText = GameObject.Find("ServerInfoText").GetComponent<Text>();
}
Run Code Online (Sandbox Code Playgroud)

smg*_*smg 5

不看你的场景就无法说。

尝试的事情:

  • GameObject.Find仅适用于活动的游戏对象。确保游戏对象在场景视图中没有变灰。
  • 仔细检查名称字符串是否正确并用于Debug.Log完整性检查。
  • 您没有提到实际发生的异常发生在哪一行。在上面的代码中,有可能在两个位置抛出异常:SetActive()如果serverInfoImage为 null,或者GetComponent<Text>()如果没有找到 ServerInfoText 对象。阅读您获得的实际异常消息,并确保您查看的是正确的行/对象。
  • 由于您的对象已经在您的场景中创建,因此使用GameObject.Find获取对对象的引用没有任何优势。通过检查器直接设置对对象的引用会更有效。此选项具有使用禁用游戏对象的额外好处。要么将您的两个成员变量设为私有,要么使用SerializeField属性使属性在检查器中可见。