我们在制作UI的时候需要用控制界面的显示与隐藏,但是如果一开始就直接禁用的话,会无法加载这个界面上的组件和代码.
口累哇 打咩(这样不行): 无法加载SettingPanel
?这个时候我们需要用代码控制,而且有讲究
1.继承一个UI的父类,这个父类里面有显示和隐藏的方法,最重要的是,要在Awake()里实例化.
public class BasePanel<T> : MonoBehaviour where T : class
{
private static T instance;
public static T Instance => instance;
private void Awake()
{
//在Awake中初始化的 原因是
//我们的面板脚本 在场景上 肯定只会挂载一次
//那么我们可以在这个脚本的生命周期函数的Awake中
//直接记录场景上 唯一的这个脚本
instance = this as T;
}
public virtual void ShowMe()
{
this.gameObject.SetActive(true);
}
public virtual void HideMe()
{
this.gameObject.SetActive(false);
}
}
2. 在子类的Start() 函数里隐藏自身
public class SettingPanel : BasePanel<SettingPanel>
{
void Start()
{
HideMe();
}
}
这样就能在父类的Awake()里实例化,在自己的Start()里隐藏,能够实现隐藏自己的同时代码组件也能加载啦!
|