关于Unity中单例调用和委托的使用方式

来源:互联网 发布:python 爬取金融数据 编辑:程序博客网 时间:2024/06/05 05:49

在Unity中,通过单例调用的方法中如果包含已初始化的GameObject,则调用后为null而报错,这时应该使用委托的方式,举例:
public delegate void PanelDelegate(string column);
public static PanelDelegate panelShowNormal;
void Start () {
public GameObject Toast;
Toast.SetActive(false);
panelShowNormal += ShowToast;
}
public void ShowToast(string Column) {
Toast.SetActive(true);
Toast.transform.GetChild(0).gameObject.GetComponent().text = Localization.Get(Column);
}

上述代码,分别用下列两种方式调用:

PanelManager.panelShowNormal(“updateSuccess”); //调用成功,执行成功

SingleTon.Instance.ShowToast(“updateSuccess”); //调用成功,执行失败,Toast报null

结论:当涉及到有GameObject的时候,使用委托而不使用单例。

原创粉丝点击