c# - Unity3D SetActive 卡住UI面板

标签 c# unity-game-engine

我在 Unity 中隐藏 UI 面板时遇到问题。当客户端连接到服务器时,将调用该代码。

void OnPlayerConnected(NetworkPlayer player) {
     gameObject.SendMessage("HideAllActiveUI", SendMessageOption.NoReceiverRequired);
}

void OnConnectedToServer() {
     gameObject.SendMessage("HideAllActiveUI", SendMessageOption.NoReceiverRequired);
}

public void HideAllActiveUI() {
     uiPanel.SetActive(false);
     gameUI.SetActive(true);
}

我已经初始化了所有必要的变量,但是代码没有隐藏面板。令人惊讶的是,当我在编辑器上运行它时,它成功隐藏了面板,但是当我在播放器上运行它时,UI 面板仍然存在,并且即使 UI 面板没有消失,游戏 UI 也会出现。

最佳答案

尝试在面板的 gameObject 属性上调用 SetActive,而不是直接在面板上调用:

uiPanel.gameObject.SetActive(false);

关于c# - Unity3D SetActive 卡住UI面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30365163/

相关文章:

C# Unity JsonUtility,如何将这个简单的 json 转换为某种有用的 C# 对象?

visual-studio - Image' 不包含 'texture' 的定义,并且没有可访问的扩展方法 'texture' 接受类型 'Image' 的第一个参数

c# - C2259 : 'ATL::CComObject<Base>' : cannot instantiate abstract class

c# - 在使用属性注入(inject)时,我们如何知道 "Local Defaults"是什么?

c# - 无法阻止 Windows Server 2012 上的 IIS 8.5 中的回收

c# - 数据成员验证 - ISO 4217(货币)和 639-1(语言)

c# - 在 Azure Key Vault 中创建新 key 和 secret

c# - 静态实例不像我期望的那样工作

c# - 如何使对象/层忽略附近的裁剪平面?

c# - 为什么我的敌人子弹和我的玩家之间没有检测到碰撞?