2015-05-21 57 views
2

我在Unity中隱藏UI面板時遇到問題。代碼在客戶端連接到服務器時調用。Unity3D SetActive凍結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。

+0

是您gamobject活躍?從文檔:請注意,消息不會被髮送到非活動對象(即已在編輯器中停用或使用SetActive功能的消息)。 –

+0

是的。我的gameobject是活動的。 sendmessage可以工作,但UI不會隱藏。顯然它凍結了,所有的按鈕變成不可點擊的,可能會導致gameUI變得活躍,但是遊戲UI有一個背景圖像,它應該涵蓋了整個UI。 – Ophitect

+0

您確定您實際連接到服務器嗎?如果連接的函數永遠不會被調用它不能調用HideAllActiveUI –

回答

1

嘗試在你的面板gameObject財產呼叫SetActive,而不是直接在面板上:

uiPanel.gameObject.SetActive(false);