问题引出
今天写Unity程序时出现以下问题,主要代码如下
void ShowMessageBox()
{
GameObject messageBox = (GameObject)Resources.Load("Prefabs/MessageBox");
messageBox.GetComponentInChildren<Text>().text = "The model already exists.\nCover it?";
Instantiate(messageBoxResource);
messageBox.GetComponent<MyMessageBox>().OkBtn.onClick.AddListener(OnOkBtnClicked);
messageBox.GetComponent<MyMessageBox>().CancleBtn.onClick.AddListener(OnCancleBtnClicked);
}
void OnOkBtnClicked()
{
Debug.Log("Click OK");
DestroyImmediate(messageBox);
}
void OnCloseBtnClicked()
{
DestroyImmediate(messageBox);
}
void OnCancleBtnClicked()
{
Debug.Log("Click Cancle");
DestroyImmediate(messageBox);
}
开始程序死活都无法响应MessageBox的OK和Cancle按钮的点击事件。鼠标滑过Instantiate时IDE提示返回GameObject,突然提醒了我Instantiate返回的才是在场景中的GameObject,Resource.Load只是将资源加载到内存当中。因此将代码改为如下:
void