关于UnityUI界面显示隐藏的问题

我们在制作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()里隐藏,能够实现隐藏自己的同时代码组件也能加载啦!

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值