//------------------------------------------------------------ // Game Framework // Copyright © 2013-2021 loyalsoft. All rights reserved. // Homepage: http://www.game7000.com/ // Feedback: http://www.game7000.com/ //------------------------------------------------------------ using UnityEngine; namespace UnityGameFramework.Runtime { /// /// 界面逻辑基类。 /// public abstract class UIFormLogic : MonoBehaviour { private bool m_Available = false; private bool m_Visible = false; private UIForm m_UIForm = null; private Transform m_CachedTransform = null; private int m_OriginalLayer = 0; /// /// 获取界面。 /// public UIForm UIForm { get { return m_UIForm; } } /// /// 获取或设置界面名称。 /// public string Name { get { return gameObject.name; } set { gameObject.name = value; } } /// /// 获取界面是否可用。 /// public bool Available { get { return m_Available; } } /// /// 获取或设置界面是否可见。 /// public bool Visible { get { return m_Available && m_Visible; } set { if (!m_Available) { Log.Warning("UI form '{0}' is not available.", Name); return; } if (m_Visible == value) { return; } m_Visible = value; InternalSetVisible(value); } } /// /// 获取已缓存的 Transform。 /// public Transform CachedTransform { get { return m_CachedTransform; } } /// /// 界面初始化。 /// /// 用户自定义数据。 public virtual void OnInit(object userData) { if (m_CachedTransform == null) { m_CachedTransform = transform; } m_UIForm = GetComponent(); m_OriginalLayer = gameObject.layer; } /// /// 界面回收。 /// public virtual void OnRecycle() { } /// /// 界面打开。 /// /// 用户自定义数据。 public virtual void OnOpen(object userData) { m_Available = true; Visible = true; } /// /// 界面关闭。 /// /// 是否是关闭界面管理器时触发。 /// 用户自定义数据。 public virtual void OnClose(bool isShutdown, object userData) { gameObject.SetLayerRecursively(m_OriginalLayer); Visible = false; m_Available = false; } /// /// 界面暂停。 /// public virtual void OnPause() { Visible = false; } /// /// 界面暂停恢复。 /// public virtual void OnResume() { Visible = true; } /// /// 界面遮挡。 /// public virtual void OnCover() { } /// /// 界面遮挡恢复。 /// public virtual void OnReveal() { } /// /// 界面激活。 /// /// 用户自定义数据。 public virtual void OnRefocus(object userData) { } /// /// 界面轮询。 /// /// 逻辑流逝时间,以秒为单位。 /// 真实流逝时间,以秒为单位。 public virtual void OnUpdate(float elapseSeconds, float realElapseSeconds) { } /// /// 界面深度改变。 /// /// 界面组深度。 /// 界面在界面组中的深度。 public virtual void OnDepthChanged(int uiGroupDepth, int depthInUIGroup) { } /// /// 设置界面的可见性。 /// /// 界面的可见性。 public virtual void InternalSetVisible(bool visible) { gameObject.SetActive(visible); } } }