mirror of
https://github.com/Alex-Rachel/TEngine.git
synced 2025-08-14 16:51:28 +00:00
移除UIElement代码绑定工具,为后续AutoBind代码绑定工具做准备
移除UIElement代码绑定工具,为后续AutoBind代码绑定工具做准备
This commit is contained in:
@@ -812,7 +812,6 @@ GameObject:
|
||||
- component: {fileID: 4070374929253206932}
|
||||
- component: {fileID: 4872533144352319846}
|
||||
- component: {fileID: 3352775805385032060}
|
||||
- component: {fileID: 3859027068210555860}
|
||||
m_Layer: 5
|
||||
m_Name: UILoadTip
|
||||
m_TagString: Untagged
|
||||
@@ -880,31 +879,6 @@ MonoBehaviour:
|
||||
m_BlockingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 55
|
||||
--- !u!114 &3859027068210555860
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7666412045263395013}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: bcd11033283847ee8f7c71eedd9a4771, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
elements:
|
||||
m_keys:
|
||||
- m_btnUpdate
|
||||
- m_btnIgnore
|
||||
- m_textInfo
|
||||
- m_textTittle
|
||||
- m_btnPackage
|
||||
m_values:
|
||||
- {fileID: 2745714441875214452}
|
||||
- {fileID: 467775921333773033}
|
||||
- {fileID: 3862717357071106210}
|
||||
- {fileID: 9127528276671758327}
|
||||
- {fileID: 1387175525974173601}
|
||||
--- !u!1 &8012535748721374403
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
@@ -773,7 +773,6 @@ GameObject:
|
||||
- component: {fileID: 1633508802563447727}
|
||||
- component: {fileID: 5827342734203288403}
|
||||
- component: {fileID: 4835021223508371640}
|
||||
- component: {fileID: 903919243524269039}
|
||||
m_Layer: 5
|
||||
m_Name: UILoadUpdate
|
||||
m_TagString: Untagged
|
||||
@@ -843,33 +842,6 @@ MonoBehaviour:
|
||||
m_BlockingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 55
|
||||
--- !u!114 &903919243524269039
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 9130266365217219149}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: bcd11033283847ee8f7c71eedd9a4771, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
elements:
|
||||
m_keys:
|
||||
- m_imgBackGround
|
||||
- m_scrollbarProgress
|
||||
- m_textDesc
|
||||
- m_btnClear
|
||||
- m_textAppid
|
||||
- m_textResid
|
||||
m_values:
|
||||
- {fileID: 4652061626151979521}
|
||||
- {fileID: 2347891492826839465}
|
||||
- {fileID: 8666815445422661327}
|
||||
- {fileID: 4232232858152633415}
|
||||
- {fileID: 3038352660368000718}
|
||||
- {fileID: 8143980099109665604}
|
||||
--- !u!1 &9157096376857424144
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
@@ -20,26 +20,22 @@ namespace GameMain
|
||||
public MessageShowType ShowType = MessageShowType.None;
|
||||
|
||||
#region 脚本工具生成的代码
|
||||
|
||||
private Button m_btnPackage;
|
||||
private Text m_textTittle;
|
||||
private Text m_textInfo;
|
||||
private Button m_btnIgnore;
|
||||
private Button m_btnUpdate;
|
||||
|
||||
public override void ScriptGenerator()
|
||||
{
|
||||
CheckUIElement();
|
||||
m_btnPackage = FChild<Button>("m_btnPackage");
|
||||
m_textTittle = FChild<Text>("m_textTittle");
|
||||
m_textInfo = FChild<Text>("m_textInfo");
|
||||
m_btnIgnore = FChild<Button>("m_btnIgnore");
|
||||
m_btnUpdate = FChild<Button>("m_btnUpdate");
|
||||
m_btnPackage = FindChildComponent<Button>("BgImage/m_btnPackage");
|
||||
m_textTittle = FindChildComponent<Text>("BgImage/m_textTittle");
|
||||
m_textInfo = FindChildComponent<Text>("BgImage/m_textInfo");
|
||||
m_btnIgnore = FindChildComponent<Button>("BgImage/Group/m_btnIgnore");
|
||||
m_btnUpdate = FindChildComponent<Button>("BgImage/Group/m_btnUpdate");
|
||||
m_btnPackage.onClick.AddListener(OnClickPackageBtn);
|
||||
m_btnIgnore.onClick.AddListener(OnClickIgnoreBtn);
|
||||
m_btnUpdate.onClick.AddListener(OnClickUpdateBtn);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 事件
|
||||
|
@@ -8,22 +8,21 @@ namespace GameMain
|
||||
[Window(UILayer.UI, fromResources: true, location: "AssetLoad/UILoadUpdate",fullScreen:true)]
|
||||
public class UILoadUpdate : UIWindow
|
||||
{
|
||||
private Scrollbar m_scrollbarProgress;
|
||||
|
||||
#region 脚本工具生成的代码
|
||||
private Image m_imgBackGround;
|
||||
private Scrollbar m_scrollbarProgress;
|
||||
private Text m_textDesc;
|
||||
private Button m_btnClear;
|
||||
private Text m_textAppid;
|
||||
private Text m_textResid;
|
||||
public override void ScriptGenerator()
|
||||
{
|
||||
CheckUIElement();
|
||||
m_imgBackGround = FChild<Image>("m_imgBackGround");
|
||||
m_scrollbarProgress = FChild<Scrollbar>("m_scrollbarProgress");
|
||||
m_textDesc = FChild<Text>("m_textDesc");
|
||||
m_btnClear = FChild<Button>("m_btnClear");
|
||||
m_textAppid = FChild<Text>("m_textAppid");
|
||||
m_textResid = FChild<Text>("m_textResid");
|
||||
m_imgBackGround = FindChildComponent<Image>("m_imgBackGround");
|
||||
m_textDesc = FindChildComponent<Text>("m_textDesc");
|
||||
m_btnClear = FindChildComponent<Button>("TopNode/m_btnClear");
|
||||
m_textAppid = FindChildComponent<Text>("TopNode/m_textAppid");
|
||||
m_textResid = FindChildComponent<Text>("TopNode/m_textResid");
|
||||
m_btnClear.onClick.AddListener(OnClickClearBtn);
|
||||
}
|
||||
#endregion
|
||||
@@ -31,6 +30,7 @@ namespace GameMain
|
||||
public override void OnCreate()
|
||||
{
|
||||
base.OnCreate();
|
||||
m_scrollbarProgress = FindChildComponent<Scrollbar>("m_scrollbarProgress");
|
||||
LoadUpdateLogic.Instance.DownloadCompleteAction += DownLoad_Complete_Action;
|
||||
LoadUpdateLogic.Instance.DownProgressAction += DownLoad_Progress_Action;
|
||||
LoadUpdateLogic.Instance.UnpackedCompleteAction += Unpacked_Complete_Action;
|
||||
|
@@ -1,179 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using Sirenix.OdinInspector.Editor;
|
||||
using TEngine.Editor.UI;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
#if UNITY_EDITOR
|
||||
namespace TEngine
|
||||
{
|
||||
[CanEditMultipleObjects]
|
||||
[CustomEditor(typeof(UIElement), true)]
|
||||
public class UIElementEditor : OdinEditor
|
||||
{
|
||||
protected UIElement Element;
|
||||
|
||||
protected override void OnEnable()
|
||||
{
|
||||
base.OnEnable();
|
||||
Element = target as UIElement;
|
||||
}
|
||||
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
serializedObject.Update();
|
||||
EditorGUI.BeginChangeCheck();
|
||||
if (GUILayout.Button("Generate", GUILayout.Width(130)))
|
||||
{
|
||||
CheckUiItems();
|
||||
}
|
||||
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
if (EditorGUI.EndChangeCheck())
|
||||
{
|
||||
EditorUtility.SetDirty(Element);
|
||||
}
|
||||
|
||||
base.OnInspectorGUI();
|
||||
}
|
||||
|
||||
protected void CheckUiItems()
|
||||
{
|
||||
if (Element == null) return;
|
||||
ClearUnusedItems();
|
||||
var root = Element.transform;
|
||||
StringBuilder strVar = new StringBuilder();
|
||||
StringBuilder strBind = new StringBuilder();
|
||||
StringBuilder strOnCreate = new StringBuilder();
|
||||
StringBuilder strOnCreateRedNote = new StringBuilder();
|
||||
StringBuilder strCallback = new StringBuilder();
|
||||
Ergodic(root, root, ref strVar, ref strBind, ref strOnCreate, ref strOnCreateRedNote, ref strCallback);
|
||||
StringBuilder strFile = new StringBuilder();
|
||||
|
||||
// 脚本工具生成的代码
|
||||
strFile.Append("\t\t#region 脚本工具生成的代码\n");
|
||||
strFile.Append(strVar);
|
||||
strFile.Append("\t\tpublic override void ScriptGenerator()\n");
|
||||
strFile.Append("\t\t{\n");
|
||||
strFile.Append("\t\t\tCheckUIElement();\n");
|
||||
strFile.Append(strBind);
|
||||
strFile.Append(strOnCreate);
|
||||
strFile.Append(strOnCreateRedNote);
|
||||
strFile.Append("\t\t}\n");
|
||||
strFile.Append("\t\t#endregion");
|
||||
|
||||
TextEditor te = new TextEditor();
|
||||
te.text = strFile.ToString();
|
||||
te.SelectAll();
|
||||
te.Copy();
|
||||
}
|
||||
|
||||
private void ClearUnusedItems()
|
||||
{
|
||||
if (Element == null || Element.Elements == null) return;
|
||||
List<string> ids = new List<string>();
|
||||
foreach (var kv in Element.Elements)
|
||||
{
|
||||
if (kv.Value == null || !string.IsNullOrEmpty(GetVerType(kv.Key)))
|
||||
{
|
||||
ids.Add(kv.Key);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var id in ids)
|
||||
{
|
||||
Element.Elements.Remove(id);
|
||||
}
|
||||
}
|
||||
|
||||
private void Ergodic(Transform root, Transform transform, ref StringBuilder strVar, ref StringBuilder strBind, ref StringBuilder strOnCreate,
|
||||
ref StringBuilder strOnCreateRedNote, ref StringBuilder strCallback)
|
||||
{
|
||||
for (int i = 0; i < transform.childCount; ++i)
|
||||
{
|
||||
Transform child = transform.GetChild(i);
|
||||
WriteScript(root, child, ref strVar, ref strBind, ref strOnCreate, ref strOnCreateRedNote, ref strCallback);
|
||||
if (child.name.StartsWith("m_item"))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
Ergodic(root, child, ref strVar, ref strBind, ref strOnCreate, ref strOnCreateRedNote, ref strCallback);
|
||||
}
|
||||
}
|
||||
|
||||
private void WriteScript(Transform root, Transform child, ref StringBuilder strVar, ref StringBuilder strBind, ref StringBuilder strOnCreate,
|
||||
ref StringBuilder strOnCreateRedNote, ref StringBuilder strCallback)
|
||||
{
|
||||
var varName = child.name;
|
||||
var varType = GetVerType(varName);
|
||||
if (varType == string.Empty) return;
|
||||
if (Element.Elements.Contains(varName))
|
||||
{
|
||||
Debug.LogError("有重复的key:" + varName);
|
||||
return;
|
||||
}
|
||||
|
||||
Element.Elements[varName] = child;
|
||||
if (!string.IsNullOrEmpty(varName))
|
||||
{
|
||||
strVar.Append("\t\tprivate " + varType + " " + varName + ";\n");
|
||||
switch (varType)
|
||||
{
|
||||
case "Transform":
|
||||
strBind.Append($"\t\t\t{varName} = FChild(\"{varName}\");\n");
|
||||
break;
|
||||
case "GameObject":
|
||||
strBind.Append($"\t\t\t{varName} = FChild(\"{varName}\").gameObject;\n");
|
||||
break;
|
||||
case "RichItemIcon":
|
||||
strBind.Append($"\t\t\t{varName} = CreateWidgetByType<{varType}>(FChild(\"{varName}\"));\n");
|
||||
break;
|
||||
case "RedNoteWidget":
|
||||
break;
|
||||
case "TextButtonItem":
|
||||
case "SwitchTabItem":
|
||||
case "UIActorWidget":
|
||||
case "UIEffectWidget":
|
||||
case "UISpineWidget":
|
||||
case "UIMainPlayerWidget":
|
||||
strBind.Append($"\t\t\t{varName} = CreateWidget<{varType}>(FChild(\"{varName}\").gameObject);\n");
|
||||
break;
|
||||
default:
|
||||
strBind.Append($"\t\t\t{varName} = FChild<{varType}>(\"{varName}\");\n");
|
||||
break;
|
||||
}
|
||||
|
||||
if (varType == "Button")
|
||||
{
|
||||
string varFuncName = ScriptGenerator.GetBtnFuncName(varName);
|
||||
strOnCreate.Append($"\t\t\t{varName}.onClick.AddListener({varFuncName});\n");
|
||||
strCallback.Append($"\t\tprivate void {varFuncName}()\n");
|
||||
strCallback.Append("\t\t{\n\t\t}\n");
|
||||
}
|
||||
else if (varType == "Toggle")
|
||||
{
|
||||
string varFuncName = ScriptGenerator.GetToggleFuncName(varName);
|
||||
strOnCreate.Append($"\t\t\t{varName}.onValueChanged.AddListener({varFuncName});\n");
|
||||
strCallback.Append($"\t\tprivate void {varFuncName}(bool isOn)\n");
|
||||
strCallback.Append("\t\t{\n\t\t}\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected string GetVerType(string uiName)
|
||||
{
|
||||
foreach (var pair in SettingsUtils.GetScriptGenerateRule())
|
||||
{
|
||||
if (uiName.StartsWith(pair.uiElementRegex))
|
||||
{
|
||||
return pair.componentName;
|
||||
}
|
||||
}
|
||||
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 02ba9976b78c4a079e16aa9302c1b43e
|
||||
timeCreated: 1696659319
|
@@ -513,54 +513,5 @@ namespace TEngine
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region UIElement
|
||||
|
||||
/// <summary>
|
||||
/// UI元素节点。
|
||||
/// </summary>
|
||||
protected UIElement UIElement;
|
||||
|
||||
/// <summary>
|
||||
/// 检测UI元素节点。
|
||||
/// </summary>
|
||||
protected virtual void CheckUIElement()
|
||||
{
|
||||
if (rectTransform != null)
|
||||
{
|
||||
UIElement = rectTransform.GetComponent<UIElement>();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取子节点。
|
||||
/// </summary>
|
||||
/// <param name="childName">子节点名称。</param>
|
||||
/// <returns>子节点位置实例。</returns>
|
||||
protected Transform FChild(string childName)
|
||||
{
|
||||
if (UIElement != null)
|
||||
{
|
||||
var child = UIElement.Get(childName);
|
||||
if (child != null)
|
||||
{
|
||||
return child;
|
||||
}
|
||||
}
|
||||
return FindChild(childName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取子节点脚本。
|
||||
/// </summary>
|
||||
/// <typeparam name="T">子节点类型。</typeparam>
|
||||
/// <param name="childName">子节点名称。</param>
|
||||
/// <returns>子节点脚本实例。</returns>
|
||||
protected T FChild<T>(string childName) where T : Component
|
||||
{
|
||||
var child = FChild(childName);
|
||||
return child == null ? null : child.GetComponent<T>();
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
@@ -1,50 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace TEngine
|
||||
{
|
||||
/// <summary>
|
||||
/// UI元素节点。
|
||||
/// <remarks>通过mono序列化来绑定ui节点的元素换取查找与ui的稳定性。</remarks>
|
||||
/// </summary>
|
||||
public class UIElement : MonoBehaviour
|
||||
{
|
||||
/// <summary>
|
||||
/// UI元素。
|
||||
/// </summary>
|
||||
[SerializeField] protected SerializableDictionary<string, Transform> elements = new SerializableDictionary<string, Transform>();
|
||||
|
||||
/// <summary>
|
||||
/// UI元素。
|
||||
/// </summary>
|
||||
public SerializableDictionary<string, Transform> Elements => elements;
|
||||
|
||||
/// <summary>
|
||||
/// 获取UI元素。
|
||||
/// </summary>
|
||||
/// <param name="uiID">ui元素标识。</param>
|
||||
/// <returns>UI元素。</returns>
|
||||
public Transform Get(string uiID)
|
||||
{
|
||||
elements.TryGetValue(uiID, out var uiTransform);
|
||||
return uiTransform;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取UI元素。
|
||||
/// </summary>
|
||||
/// <typeparam name="T">ui元素类型。</typeparam>
|
||||
/// <param name="uiID">ui元素标识。</param>
|
||||
/// <returns>ui元素标识。</returns>
|
||||
public T Get<T>(string uiID) where T : Component
|
||||
{
|
||||
var uiTransform = Get(uiID);
|
||||
return uiTransform == null ? null : uiTransform.GetComponent<T>();
|
||||
}
|
||||
|
||||
public void OnDestroy()
|
||||
{
|
||||
elements.Clear();
|
||||
elements = null;
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bcd11033283847ee8f7c71eedd9a4771
|
||||
timeCreated: 1696656961
|
Reference in New Issue
Block a user