游戏框架之UI管理(二)

这次是准备用UGUI写个UI框架,之前用NGUI写过,事件处理是用的UIEvent。

但是NGUI在5.1之后和vuforia有了点冲突,没办法我只能换成UGUI。

这里就分享下吧。


我的思路大体是这样,用一个BaseUI管理UI的所有特性,作为基类。

这里是面向对象的一个设计思路。

稍微提下,有些朋友问我为什么要写一个CacheTransform,不就是this吗。

这里我的本意是把这个Transform加入缓存,这样执行起来效率高点。



using UnityEngine;
using System.Collections;


public class BaseUI : MonoBehaviour 
{
    
    /// <summary>
    /// 当前界面名称
    /// </summary>
    [HideInInspector]
    public string UIName;


    private Transform mTransform;
    public Transform CacheTransform
    {
        get
        {
            if (mTransform == null) mTransform = this.transform;
            return mTransform;
        }
    }


    private GameObject mGo;
    public GameObject CacheGameObject
    {
        get
        {
            if (mGo == null) mGo = this.gameObject;
            return mGo;
        }
    }


    /// <summary>
    /// 显示当前UI
    /// </summary>
    /// <param name="param">附加参数</param>
    public void Show(object param)
    {
        CacheGameObject.SetActive(true);
        OnShow(param);
    }


    /// <summary>
    /// 隐藏当前界面
    /// </summary>
    public void Hide()
    {
        CacheGameObject.SetActive(false);
        OnHide();
    }


    [HideInInspector]
    public Canvas mainCanvas = null;


<span style="white-space:pre">	</span>/// <summary>
<span style="white-space:pre">	</span>/// 绑定脚本并且激活游戏物体会调用的方法
<span style="white-space:pre">	</span>/// </summary>
<span style="white-space:pre">	</span>void Awake() 
<span style="white-space:pre">	</span>{
        OnAwake();
<span style="white-space:pre">	</span>}


    /// <summary>
    /// 初始化UI主要用于寻找组件等
    /// </summary>
    public void UIInit()
    {
        OnInit();
    }


    /// <summary>
    /// 显示当前界面
    /// </summary>
    /// <param name="param">附加参数</param>
    protected virtual void OnShow(object param){ }


    /// <summary>
    /// 隐藏当前界面
    /// </summary>
    protected virtual void OnHide() { }


    /// <summary>
    /// 初始化当前界面
    /// </summary>
    protected virtual void OnInit() { }


    protected virtual void OnAwake() { }


    /// <summary>
    /// 删除当前UI 
    /// </summary>
    protected virtual void OnDestroy() { }
}

虚函数 是用来给继承类去继承的。



接下来写UIMgr,用来管理BaseUI.

说下思路,这里是想用命令集的形式去弄UI,在update里面每帧去调用一次命令集。

所以先写一个Command的命令集类

 /// <summary>
    /// 操作UI命令集
    /// </summary>
    public class Command
    {
        /// <summary>
        /// 命令类型
      
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值