Unity设计模式10_UI基类

1.引入:

常用的两种为Button添加事件的方法:

1.写一个public函数,然后将该脚本挂载到一个物体上,然后拖拽到button的onclick组件上。

2.声明一个button变量,在inspector面板将要添加事件的button赋值给button,然后再在脚本里面button.onClick.AddListener(SayNewGame)
如果直接这样写的话有两种弊端:

1.容易拖拽错误
2.如果该面板组件很多的话会很麻烦,比如我们有20个button,就需要声明20个button变量,用的时候也非常难以找到。
这个时候,我们可以写一个UI基类,然后创建一个脚本继承自该类,挂载到Panel上,使其对该Panel下的所有组件进行管理。

2.主要思路

为了使继承自该基类的Panel脚本能够轻松的获取到该面板下的任何的组件,我们可以统一的把所有组件存放起来,为了区分是哪个子物体的组件,可以用字典的形式,即:

Dictionary<string, UIBehaviour> dic = new Dictionary<string, UIBehaviour>();

注意:所有的UI组件均继承于UIBehaviour

但这样存放会产生一个问题:

一个物体上往往不止一个UI组件,这样存放会造成键的重复,这是不允许的,比如有个Button物体,它身上有image组件和Button组件,在存放的时候就会造成“Button-image”、“Button-Button”的键重复错误,为了解决这样的问题,我们使用下面的形式:

Dictionary<string, List<UIBehaviour>> dic = new Dictionary<string, List<UIBehaviour>>();

即用一个list来存放一个物体下的所有组件

接下来,就可以该Panel下获取所有组件进行存放(panel下的物体的组件有哪些类型参数填哪些类型):

    /// <summary>
    /// 获取该类型的所有组件,添加到字典中
    /// </summary>
    /// <typeparam name="T"></typeparam>
    void GetUIComponent<T>() where T: UIBehaviour
    {
   
        if(dic == null)
        {
   
            return;
        }
        T[] ts = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值