Unity3D GameView-BaseWindow

发表于2018-09-12
评论0 548浏览
上一篇给大家介绍了LoginWindow登录界面使用,这篇我们就来看看BaseWindow。

这个地方比较简单就直接上代码了:
using UnityEngine;
using System.Collections;
using BlGame;
using GameDefine;
namespace BlGame.View
{
    public abstract class BaseWindow
    {
        protected Transform mRoot;
        protected EScenesType mScenesType; //场景类型
        protected string mResName;         //资源名
        protected bool mResident;          //是否常驻 
        protected bool mVisible = false;   //是否可见
        //类对象初始化
        public abstract void Init();
        //类对象释放
        public abstract void Realse();
        //窗口控制初始化
        protected abstract void InitWidget();
        //窗口控件释放
        protected abstract void RealseWidget();
        //游戏事件注册
        protected abstract void OnAddListener();
        //游戏事件注消
        protected abstract void OnRemoveListener();
        //显示初始化
        public abstract void OnEnable();
        //隐藏处理
        public abstract void OnDisable();
        //每帧更新
        public virtual void Update(float deltaTime) { }
        //取得所以场景类型
        public EScenesType GetScenseType()
        {
            return mScenesType;
        }
        //是否已打开
        public bool IsVisible() { return mVisible;  }
        //是否常驻
        public bool IsResident() { return mResident; }
        //显示
        public void Show()
        {
            if (mRoot == null)
            {
                if (Create())
                {
                    InitWidget();
                }
            }
            if (mRoot && mRoot.gameObject.activeSelf == false)
            {
                mRoot.gameObject.SetActive(true);
                mVisible = true;
                 OnEnable();
                OnAddListener();
            }
        }
        //隐藏
        public void Hide()
        {
            if (mRoot && mRoot.gameObject.activeSelf == true)
            {
                OnRemoveListener();
                OnDisable();
                if (mResident)
                {
                    mRoot.gameObject.SetActive(false);
                }
                else
                {
                    RealseWidget();
                    Destroy();
                }
            }
            mVisible = false;
        }
        //预加载
        public void PreLoad()
        {
            if (mRoot == null)
            {
                if (Create())
                {
                    InitWidget();
                }
            }
        }
        //延时删除
        public void DelayDestory()
        {
            if (mRoot)
            {
                RealseWidget();
                Destroy();
            }
        }
        //创建窗体
        private bool Create()
        {
            if (mRoot)
            {
                Debug.LogError("Window Create Error Exist!");
                return false;
            }
            if (mResName == null || mResName == "")
            {
                Debug.LogError("Window Create Error ResName is empty!");
                return false;
            }
            if (GameMethod.GetUiCamera.transform== null)
            {
                Debug.LogError("Window Create Error GetUiCamera is empty! WindowName = " + mResName);
                return false;
            }
            GameObject obj = LoadUiResource.LoadRes(GameMethod.GetUiCamera.transform, mResName);
            if (obj == null)
            {
                Debug.LogError("Window Create Error LoadRes WindowName = " + mResName);
                return false;
            }
            mRoot = obj.transform;
            mRoot.gameObject.SetActive(false);
            return true;
        }
        //销毁窗体
        protected void Destroy()
        {
            if (mRoot)
            {
                LoadUiResource.DestroyLoad(mRoot.gameObject);
                mRoot = null;
            }
        }
        //取得根节点
        public Transform GetRoot()
        {
            return mRoot;
        }
    }
}
来自:https://blog.csdn.net/u013108312/article/details/78335748

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

标签: