初始化

This commit is contained in:
come
2025-07-26 16:56:42 +08:00
parent 8291dbb91c
commit fa81439a8c
2574 changed files with 328492 additions and 2170 deletions

View File

@@ -0,0 +1,243 @@
using System;
using Sirenix.OdinInspector;
using YIUIBind;
using UnityEngine;
namespace YIUIFramework
{
/// <summary>
/// UI基类
/// </summary>
[HideLabel]
[HideReferenceObjectPicker]
public abstract class UIBase
{
#region table表禁止public
internal UIBindCDETable m_CDETable;
protected UIBindCDETable CDETable => m_CDETable;
internal UIBindComponentTable m_ComponentTable;
protected UIBindComponentTable ComponentTable => m_ComponentTable;
internal UIBindDataTable m_DataTable;
protected UIBindDataTable DataTable => m_DataTable;
internal UIBindEventTable m_EventTable;
protected UIBindEventTable EventTable => m_EventTable;
#endregion
/// <summary>
/// 当前UI的预设对象
/// </summary>
[LabelText("UI对象")]
public GameObject OwnerGameObject;
/// <summary>
/// 当前UI的Tsf
/// </summary>
[HideInInspector]
public RectTransform OwnerRectTransform;
/// <summary>
/// 初始化状态
/// </summary>
private bool m_UIBaseInit;
public bool UIBaseInit => m_UIBaseInit;
//用这个不用.单例而已
protected PanelMgr m_PanelMgr;
/// <summary>
/// UI的资源包名
/// </summary>
public string UIPkgName => m_UIBindVo.PkgName;
/// <summary>
/// UI的资源名称
/// </summary>
public string UIResName => m_UIBindVo.ResName;
/// <summary>
/// 绑定信息
/// </summary>
private UIBindVo m_UIBindVo;
internal UIBindVo UIBindVo => m_UIBindVo;
/// <summary>
/// 当前显示状态 显示/隐藏
/// 不要使用这个设置显影
/// 应该使用控制器 或调用方法 SetActive();
/// </summary>
public bool ActiveSelf
{
get
{
if (OwnerGameObject == null) return false;
return OwnerGameObject.activeSelf;
}
}
/// <summary>
/// 初始化UIBase 由PanelMgr创建对象后调用
/// 外部禁止
/// </summary>
internal bool InitUIBase(UIBindVo uiBindVo, GameObject ownerGameObject)
{
if (ownerGameObject == null)
{
Debug.LogError($"null对象无法初始化");
return false;
}
OwnerGameObject = ownerGameObject;
OwnerRectTransform = ownerGameObject.GetComponent<RectTransform>();
m_CDETable = OwnerGameObject.GetComponent<UIBindCDETable>();
if (CDETable == null)
{
Debug.LogError($"{OwnerGameObject.name} 没有UIBindCDETable组件 这是必须的");
return false;
}
m_ComponentTable = CDETable.ComponentTable;
m_DataTable = CDETable.DataTable;
m_EventTable = CDETable.EventTable;
m_UIBaseInit = true;
m_UIBindVo = uiBindVo;
m_PanelMgr = PanelMgr.Inst;
CDETable.BindUIBase(this);
UIBaseInitialize();
return true;
}
#region
/// <summary>
/// 设置显隐
/// </summary>
public void SetActive(bool value)
{
if (OwnerGameObject == null) return;
OwnerGameObject.SetActive(value);
}
//其他的关于 RectTransform 相关的 不建议包一层
//就直接 OwnerRectTransform. 使用Unity API 就可以了 没必要包一成
//这么多方法 都有可能用到你都包一层嘛
#endregion
#region
//UIBase 生命周期顺序 2
protected virtual void UIBind()
{
}
//UIBase 生命周期顺序 3
protected virtual void Initialize()
{
}
private void UIBaseInitialize()
{
CDETable.UIBaseStart = UIBaseStart;
CDETable.UIBaseOnDestroy = UIBaseOnDestroy;
try
{
SealedInitialize();
UIBind();
Initialize();
if (ActiveSelf)
UIBaseOnEnable();
else
UIBaseOnDisable();
CDETable.UIBaseOnEnable = UIBaseOnEnable;
CDETable.UIBaseOnDisable = UIBaseOnDisable;
}
catch (Exception e)
{
Debug.LogError(e);
throw;
}
}
//UIBase 生命周期顺序 6
protected virtual void Start()
{
}
private void UIBaseStart()
{
SealedStart();
Start();
}
//UIBase 生命周期顺序 4
protected virtual void OnEnable()
{
}
private void UIBaseOnEnable()
{
OnEnable();
}
//UIBase 生命周期顺序 4
protected virtual void OnDisable()
{
}
private void UIBaseOnDisable()
{
OnDisable();
}
//UIBase 生命周期顺序 7
protected virtual void UnUIBind()
{
}
//UIBase 生命周期顺序 8
protected virtual void OnDestroy()
{
}
private void UIBaseOnDestroy()
{
UnUIBind();
OnDestroy();
SealedOnDestroy();
YIUIFactory.Destroy(this);
}
#region ()
//这是给基类用的生命周期(BasePanel,BaseView) 为了防止有人重写时不调用基类 所以直接独立
//没有什么穿插需求怎么办
//基类会重写这个类且会密封你也调用不到
//不要问为什么...
//UIBase 生命周期顺序 1
protected virtual void SealedInitialize()
{
}
//UIBase 生命周期顺序 5
protected virtual void SealedStart()
{
}
//UIBase 生命周期顺序 9
protected virtual void SealedOnDestroy()
{
}
#endregion
#endregion
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 24d50b68ce6649a0a6610ea2a05b8716
timeCreated: 1681898395