Files
CreatGame/UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Code/UIBindCDETable.cs
2025-07-26 16:56:42 +08:00

102 lines
3.0 KiB
C#

//------------------------------------------------------------
// Author: 亦亦
// Mail: 379338943@qq.com
// Data: 2023年2月12日
//------------------------------------------------------------
using System;
using System.Collections.Generic;
using Sirenix.OdinInspector;
using Sirenix.Serialization;
using YIUIBind;
using UnityEngine;
namespace YIUIFramework
{
//[DetailedInfoBox("UI CDE总表 点击展开详细介绍", @"李胜扬")]
[Serializable]
[LabelText("UI CDE总表")]
[AddComponentMenu("YIUIBind/★★★★★UI CDE Table 总表★★★★★")]
public sealed partial class UIBindCDETable : SerializedMonoBehaviour
{
#if UNITY_EDITOR
[InlineButton("AddComponentTable", "Add")]
[EnableIf("@UIOperationHelper.CommonShowIf()")]
#endif
public UIBindComponentTable ComponentTable;
#if UNITY_EDITOR
[InlineButton("AddDataTable", "Add")]
[EnableIf("@UIOperationHelper.CommonShowIf()")]
#endif
public UIBindDataTable DataTable;
#if UNITY_EDITOR
[InlineButton("AddEventTable", "Add")]
[EnableIf("@UIOperationHelper.CommonShowIf()")]
#endif
public UIBindEventTable EventTable;
[LabelText("UI包名")]
[ReadOnly]
public string PkgName;
[LabelText("UI资源名")]
[ReadOnly]
public string ResName;
#region
//关联的UI
private UIBase m_UIBase;
[OdinSerialize]
[LabelText("编辑时所有公共组件")]
[ReadOnly]
[PropertyOrder(1000)] //生成UI类时使用
#if UNITY_EDITOR
[ShowIf("@UIOperationHelper.CommonShowIf()")]
#endif
internal List<UIBindCDETable> AllChildCdeTable = new List<UIBindCDETable>();
[OdinSerialize]
[NonSerialized]
[ShowInInspector]
[ReadOnly]
[PropertyOrder(1000)]
[LabelText("运行时所有公共组件")] //动态生成后的子类(公共组件) 运行时使用
#if UNITY_EDITOR
[HideIf("@UIOperationHelper.CommonShowIf()")]
#endif
private Dictionary<string, UIBase> m_AllChildUIBase = new Dictionary<string, UIBase>();
internal void AddUIBase(string uiName, UIBase uiBase)
{
if (m_AllChildUIBase.ContainsKey(uiName))
{
Debug.LogError($"{name} 已存在 {uiName} 请检查为何重复添加 是否存在同名组件");
return;
}
m_AllChildUIBase.Add(uiName, uiBase);
}
internal UIBase FindUIBase(string uiName)
{
if (!m_AllChildUIBase.ContainsKey(uiName))
{
Debug.LogError($"{name} 不存在 {uiName} 请检查");
return null;
}
return m_AllChildUIBase[uiName];
}
public T FindUIBase<T>(string uiName) where T : UIBase
{
return (T)FindUIBase(uiName);
}
#endregion
}
}