自定义UGUI界面抽象框架

自定义UGUI界面抽象框架


  使用UGUI来制作用户界面是很方便的,但如果每个界面都用原始的方法,独立写一个脚本对每个UI组件进行控制和操作,虽然一样能工作的很好,但对于后续拓展以及调试等工作会造成不小的麻烦,想象一下臃肿复杂的Start方法和Update方法,在需要修改的时候会非常痛苦。
  因此一个比较抽象的,条理清晰的框架就显得很必要了,这种框架的设计方法有很多很多种,不同的人也会有不同的风格,但是基本思想都大同小异,无非就是将通用性强的功能抽象出来放入到基类里面,然后一层一层往下继承来具体描述特定的界面。
  基于这样的思维,可以设计出简单而实用的抽象框架。


  先从比较基础的方式入手,定义一个界面抽象基类如下

public abstract class BaseUIObject : MonoBehaviour {
    private void Start() {
        init();
    }

    protected void init() {
        try {
            loadViews();
            setupTriggers();
        } catch (Exception e) {
            Debug.Log("ERROR in - " + gameObject.name);
            Debug.Log(e.Message + "\n"+e.StackTrace);
        }
    }
    protected virtual void loadViews() { // 载入视图组件
        Debug.Log("No Implement for Function 'loadViews'! - " + getTagName());
    }
    protected virtual void setupTriggers() { // 设定界面事件
        Debug.Log("No Implement for Function 'setupTriggers'! - " + getTagName());
    }
    public virtual void updateViews() { // 刷新
        Debug.Log("No Implement for Function 'updateViews'! - " + getTagName());
    }

    public abstract string getTagName();
}

  然后只要所有跟界面相关的控制类都继承这个基类便可以遵照一定的方法规律去实现功能,比如loadViews方法用于加载界面组件,setupTriggers方法用于设置各种组件的回调等等。

public class TestUIPanel : BaseUIObject {
    private InputField userNameInput;
    private InputField passWordInput;
    private Button loginBtn;

    protected override void loadViews() {
        userNameInput = transform.Find(
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值