From 57dc91f28ba56b7b5dbf83c050493db3765cafc1 Mon Sep 17 00:00:00 2001 From: zxl Date: Tue, 3 Dec 2024 17:15:20 +0800 Subject: [PATCH] =?UTF-8?q?mod:=20=E4=BF=AE=E6=94=B9=E7=BB=91=E5=AE=9A?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GameScript/Editor/GenUIDataEditor.cs | 36 ++++---- .../Loader/MonoBehaviour/BindingBase.cs | 87 +++++++++++++++++++ .../Loader/MonoBehaviour/BindingBase.cs.meta | 3 + .../Loader/MonoBehaviour/GameObjectBinding.cs | 76 +--------------- 4 files changed, 110 insertions(+), 92 deletions(-) create mode 100644 Assets/DemoGame/GameScript/Loader/MonoBehaviour/BindingBase.cs create mode 100644 Assets/DemoGame/GameScript/Loader/MonoBehaviour/BindingBase.cs.meta diff --git a/Assets/DemoGame/GameScript/Editor/GenUIDataEditor.cs b/Assets/DemoGame/GameScript/Editor/GenUIDataEditor.cs index 18b7f31..6b20325 100644 --- a/Assets/DemoGame/GameScript/Editor/GenUIDataEditor.cs +++ b/Assets/DemoGame/GameScript/Editor/GenUIDataEditor.cs @@ -98,22 +98,22 @@ namespace ZEditor allText = allText.Replace("#CLASSNAME#", substring); - allText = allText.Replace("#VARIABLEDEFINITION#", ReplaceVD(binding.AllData)); - allText = allText.Replace("#INITFIND#", ReplaceInitBind(binding.AllData)); - allText = allText.Replace("#INITADDLISTENER#", ReplaceInitAddListener(binding.AllData)); - allText = allText.Replace("#METHOD#", ReplaceAddMethod(binding.AllData)); - allText = allText.Replace("#DISPOSE#", ReplaceDisposeRemoveListener(binding.AllData)); - allText = allText.Replace("#DISPOSEISNULL#", ReplaceDisposeIsNull(binding.AllData)); + allText = allText.Replace("#VARIABLEDEFINITION#", ReplaceVD(binding.Datas)); + allText = allText.Replace("#INITFIND#", ReplaceInitBind(binding.Datas)); + allText = allText.Replace("#INITADDLISTENER#", ReplaceInitAddListener(binding.Datas)); + allText = allText.Replace("#METHOD#", ReplaceAddMethod(binding.Datas)); + allText = allText.Replace("#DISPOSE#", ReplaceDisposeRemoveListener(binding.Datas)); + allText = allText.Replace("#DISPOSEISNULL#", ReplaceDisposeIsNull(binding.Datas)); File.WriteAllText(filePath, allText); Debug.Log("自动生成绑定数据 完成"); } } - static string ReplaceVD(IReadOnlyList AllData) // 定义 + static string ReplaceVD(IReadOnlyList Datas) // 定义 { StringBuilder sb = new StringBuilder(); - foreach (var data in AllData) + foreach (var data in Datas) { var typeStr = CheckType(data); sb.AppendLine($"public {typeStr} {data.name};"); @@ -122,10 +122,10 @@ namespace ZEditor return sb.ToString(); } - static string ReplaceInitBind(IReadOnlyList AllData) // 定义 + static string ReplaceInitBind(IReadOnlyList Datas) // 定义 { StringBuilder sb = new StringBuilder(); - foreach (var data in AllData) + foreach (var data in Datas) { var typeStr = CheckType(data); sb.AppendLine($"{data.name} = GetValue<{typeStr}>(\"{data.name}\");"); @@ -134,10 +134,10 @@ namespace ZEditor return sb.ToString(); } - static string ReplaceInitAddListener(IReadOnlyList AllData) // 定义 + static string ReplaceInitAddListener(IReadOnlyList Datas) // 定义 { StringBuilder sb = new StringBuilder(); - foreach (var data in AllData) + foreach (var data in Datas) { var typeStr = CheckType(data); if (typeStr == nameof(Button)) @@ -153,10 +153,10 @@ namespace ZEditor return sb.ToString(); } - static string ReplaceAddMethod(IReadOnlyList AllData) // 定义 + static string ReplaceAddMethod(IReadOnlyList Datas) // 定义 { StringBuilder sb = new StringBuilder(); - foreach (var data in AllData) + foreach (var data in Datas) { var typeStr = CheckType(data); if (typeStr == nameof(Button)) @@ -176,10 +176,10 @@ namespace ZEditor return sb.ToString(); } - static string ReplaceDisposeRemoveListener(IReadOnlyList AllData) // 定义 + static string ReplaceDisposeRemoveListener(IReadOnlyList Datas) // 定义 { StringBuilder sb = new StringBuilder(); - foreach (var data in AllData) + foreach (var data in Datas) { var typeStr = CheckType(data); if (typeStr == nameof(Button)) @@ -195,10 +195,10 @@ namespace ZEditor return sb.ToString(); } - static string ReplaceDisposeIsNull(IReadOnlyList AllData) // 定义 + static string ReplaceDisposeIsNull(IReadOnlyList Datas) // 定义 { StringBuilder sb = new StringBuilder(); - foreach (var data in AllData) + foreach (var data in Datas) { var typeStr = CheckType(data); sb.AppendLine($"{data.name} = null;"); diff --git a/Assets/DemoGame/GameScript/Loader/MonoBehaviour/BindingBase.cs b/Assets/DemoGame/GameScript/Loader/MonoBehaviour/BindingBase.cs new file mode 100644 index 0000000..e596e0f --- /dev/null +++ b/Assets/DemoGame/GameScript/Loader/MonoBehaviour/BindingBase.cs @@ -0,0 +1,87 @@ +using System; +using System.Collections.Generic; +using Sirenix.OdinInspector; +using UnityEngine; + +namespace ZC +{ + public abstract class BindingBase : MonoBehaviour + { + [SerializeField] private List _datas = new List(); + + public IReadOnlyList Datas => _datas; + + public GameObject GetValue(string nameStr) + { + foreach (var data in _datas) + { + if (data.name == nameStr) + { + return data.go; + } + } + + throw new NullReferenceException($"没有找到绑定这个名字的物体,name:{nameStr},物体名字:{gameObject.name}"); + } + + public T GetValue(string nameStr) where T : Component + { + foreach (var data in _datas) + { + if (data.name == nameStr) + { + return data.go.GetComponent(); + } + } + + throw new NullReferenceException($"没有找到绑定这个名字的物体,name:{nameStr},物体名字:{gameObject.name}"); + } + +#if UNITY_EDITOR + [Button("刷新键值对数据")] + void Refresh() + { + foreach (var bindingData in _datas) + { + bindingData.name = bindingData.go.name; + } + } + + public void ClearValue() + { + _datas.Clear(); + } + + public void AddValue(Transform trans) + { + foreach (var data in _datas) + { + if (data.name == trans.name) + { + throw new ArgumentException($"重复添加了, {trans.name}"); + } + } + + _datas.Add(new GameObjectBindingData() { name = trans.name, go = trans.gameObject }); + } +#endif + } + + [System.Serializable] + public class GameObjectBindingData + { + [HorizontalGroup("aaa")] [LabelText("k"), LabelWidth(10)] + public string name; + + [HorizontalGroup("aaa")] [LabelText("v"), LabelWidth(10)] [OnValueChanged(nameof(OnValueChanged))] + public GameObject go; + + private void OnValueChanged() + { + if (go != null) + name = go.name; + else + name = string.Empty; + } + } +} \ No newline at end of file diff --git a/Assets/DemoGame/GameScript/Loader/MonoBehaviour/BindingBase.cs.meta b/Assets/DemoGame/GameScript/Loader/MonoBehaviour/BindingBase.cs.meta new file mode 100644 index 0000000..73097ed --- /dev/null +++ b/Assets/DemoGame/GameScript/Loader/MonoBehaviour/BindingBase.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 753282de038d4f6f91930e91e61dda21 +timeCreated: 1733207236 \ No newline at end of file diff --git a/Assets/DemoGame/GameScript/Loader/MonoBehaviour/GameObjectBinding.cs b/Assets/DemoGame/GameScript/Loader/MonoBehaviour/GameObjectBinding.cs index cf7cabd..268e56f 100644 --- a/Assets/DemoGame/GameScript/Loader/MonoBehaviour/GameObjectBinding.cs +++ b/Assets/DemoGame/GameScript/Loader/MonoBehaviour/GameObjectBinding.cs @@ -1,78 +1,6 @@ -using System; -using System.Collections.Generic; -using Sirenix.OdinInspector; -using UnityEngine; - -namespace ZC +namespace ZC { - public class GameObjectBinding : MonoBehaviour + public class GameObjectBinding : BindingBase { - [SerializeField] private List Datas = new List(); - -#if UNITY_EDITOR - public IReadOnlyList AllData => Datas; - - public void ClearValue() - { - Datas.Clear(); - } - - public void AddValue(Transform trans) - { - foreach (var data in Datas) - { - if (data.name == trans.name) - { - throw new ArgumentException($"重复添加了, {trans.name}"); - } - } - - Datas.Add(new GameObjectBindingData() { name = trans.name, go = trans.gameObject }); - } -#endif - - public GameObject GetValue(string nameStr) - { - foreach (var data in Datas) - { - if (data.name == nameStr) - { - return data.go; - } - } - - throw new NullReferenceException($"没有找到绑定这个名字的物体,name:{nameStr}"); - } - - public T GetValue(string nameStr) where T : Component - { - foreach (var data in Datas) - { - if (data.name == nameStr) - { - return data.go.GetComponent(); - } - } - - throw new NullReferenceException($"没有找到绑定这个名字的物体,name:{nameStr}"); - } - } - - [System.Serializable] - public class GameObjectBindingData - { - [HorizontalGroup("aaa")] [LabelText("k"), LabelWidth(10)] - public string name; - - [HorizontalGroup("aaa")] [LabelText("v"), LabelWidth(10)] [OnValueChanged(nameof(OnValueChanged))] - public GameObject go; - - private void OnValueChanged() - { - if (go != null) - name = go.name; - else - name = string.Empty; - } } } \ No newline at end of file