Mir*_*bin 1 c# unity-game-engine gameobject
我的场景中有一个面板 (ErrorMessage),我已在编辑器中禁用它,并将其写入我的 C# 脚本中:
if(getUsernameResponse == "Login OK") {
Application.LoadLevel("LobbyUI");
} else {
GameObject ErrorMessage = GameObject.FindGameObjectWithTag("ErrorMessage");
ErrorMessage.SetActive(true);
}
Run Code Online (Sandbox Code Playgroud)
ErrorMessage
如果有不同的“登录正常”响应,脚本应该启用(显示)我的getUsernameResponse
。但是当我启动 liveDemo 时,我看到此错误:
NullReferenceException:行中的对象引用未设置为对象的实例:41 (ErrorMessage.SetActive(true);)
我尝试ErrorMessage
从编辑器启用并禁用
if(getUsernameResponse == "Login OK") {
Application.LoadLevel("LobbyUI");
} else {
GameObject ErrorMessage = GameObject.FindGameObjectWithTag("ErrorMessage");
ErrorMessage.SetActive(false);
}
Run Code Online (Sandbox Code Playgroud)
在我的源代码中,它工作正常,我如何ErrorMessage
从我的脚本中禁用(UI.Panel)?
感谢你的支持。
它的意思很简单:
GameObject ErrorMessage = GameObject.FindGameObjectWithTag("ErrorMessage");
Run Code Online (Sandbox Code Playgroud)
没有找到游戏对象。
可能是因为您实际上没有在游戏对象上放置标签,或者标签拼写错误。并且一定要记住图层不是标签!
说实话,我不知道你的整个设置,但我怀疑无论你做什么,你真的不应该做。为 errorMessage 对话创建标签?我用 Unity 编写了很多 UI。永远不要在 UI 中标记任何内容。标记应用于场景中需要轻松抓取的对象类型的非常通用的分组。A 队、B 队、AI、通电。它不应该用于仅抓取一个具有非常特定性质的物体。
我将使用 GameObject.Find 并按实际 GameObject 的名称搜索它。
或者我会按照 Miron Alex 所说的那样,在检查器中创建一个插槽,然后将 GameObject 拖入其中。理想情况下应该是序列化的私有变量。
[SerializeField]
private GameObject errorMessage;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2790 次 |
最近记录: |