NewStart(一)—— BaseWindow

来源:互联网 发布:imgur知乎 编辑:程序博客网 时间:2024/05/22 10:48

BaseWindow.cs
所有window类的基类

using UnityEngine;using System.Collections;using System.Collections.Generic;//所有window的基类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 Release ();    //窗口控制初始化    protected abstract void InitWidget ();    //窗口控件释放    protected abstract void ReleaseWidget ();    //游戏事件注册    protected abstract void OnAddListener ();    //游戏事件注销    protected abstract void OnRemoveListener();    //显示初始化    public abstract void OnEnable ();    //隐藏处理    public abstract void OnDisable ();    //每帧更新    public virtual void Update(float deltaTime)    {    }    //取得当前场景类型    public EScenesType GetSceneType()    {        return mScenesType;    }    //是否已打开    public bool IsVisible()    {        return mVisible;    }    //是否常驻    public bool IsResident()    {        return mResident;    }    //显示    public void Show()    {        if (mRoot == null)        {            //加载UI资源            if (Create())            {                InitWidget ();            }        }        if (mRoot && mRoot.gameObject.activeSelf == false)        {            //前面创建的时候设置成了false,这里设置成true            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            {                ReleaseWidget ();                Destroy ();            }        }        mVisible = false;    }    //预加载    public void PreLoad()    {        if (mRoot == null)        {            if (Create())            {                InitWidget ();            }        }    }    //延时删除    public void DelayDestroy()    {        if (mRoot)        {            ReleaseWidget ();            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;        }        //加载UI资源        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;    }}
原创粉丝点击