关于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
    评论
Unity中可以使用UI界面管理模块来处理UI界面显示隐藏,以及UI界面之间的切换。在使用UI界面管理模块时,通常会创建一个UI管理器类,该类会维护一个UI界面列表,通过该列表来控制UI界面显示隐藏。 具体实现步骤如下: 1. 创建一个UI管理器类,该类需要继承自MonoBehaviour,并且需要使用单例模式来保证全局只有一个实例。 2. 在UI管理器类中定义一个字典或列表,用于存储所有UI界面的引用。 3. 在UI管理器类中定义一个方法,用于注册UI界面。该方法接收一个UI界面的引用,并将其添加到字典或列表中。 4. 在UI管理器类中定义一个方法,用于显示指定的UI界面。该方法接收一个UI界面的名称或引用,并将其从字典或列表中取出,然后调用其显示方法来显示UI界面。 5. 在UI管理器类中定义一个方法,用于隐藏指定的UI界面。该方法接收一个UI界面的名称或引用,并将其从字典或列表中取出,然后调用其隐藏方法来隐藏UI界面。 6. 在UI管理器类中定义一个方法,用于切换UI界面。该方法接收两个UI界面的名称或引用,先隐藏当前显示UI界面,然后再显示要切换的UI界面。 7. 在UI管理器类中定义一个方法,用于清空所有UI界面。该方法会遍历字典或列表,并调用每个UI界面的销毁方法来销毁UI界面。 8. 在需要使用UI界面的脚本中,先获取UI管理器类的实例,然后通过注册方法将UI界面的引用传递给UI管理器类,最后使用显示隐藏方法来控制UI界面显示隐藏。 以上是Unity中使用UI界面管理模块的基本实现步骤,具体实现方式可以根据项目需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值