• QQ
  • nahooten@sina.com
  • 常州市九洲新世界花苑15-2

游戏开发

Unity3D GameView-BaseWindow

原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/youxikaifa/2018/1016/89.html

上一篇我们常州网站建设幻天网络给大家介绍了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;

        }

    }

}

 



上篇:上一篇:Unity3d框架-UI管理类 UIManager
下篇:下一篇:Unity3D摄像机的左右前后移动以及旋转