using System; using System.Collections.Generic; using Sirenix.OdinInspector; using UnityEngine; namespace ZC { public class GameObjectBinding : MonoBehaviour { [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},ui:{this.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},ui:{this.gameObject.name}"); } } }