HAARFTE/Assets/DemoGame/GameScript/Loader/MonoBehaviour/GameObjectBinding.cs

61 lines
1.6 KiB
C#
Raw Normal View History

2024-10-26 23:50:18 +08:00
using System;
using System.Collections.Generic;
using Sirenix.OdinInspector;
using UnityEngine;
namespace ZC
{
public class GameObjectBinding : MonoBehaviour
{
[SerializeField] private List<GameObjectBindingData> Datas = new List<GameObjectBindingData>();
#if UNITY_EDITOR
public IReadOnlyList<GameObjectBindingData> 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
2024-10-26 23:50:18 +08:00
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}");
2024-11-07 22:49:10 +08:00
}
public T GetValue<T>(string nameStr) where T : Component
2024-11-07 22:49:10 +08:00
{
foreach (var data in Datas)
{
if (data.name == nameStr)
{
return data.go.GetComponent<T>();
}
}
throw new NullReferenceException($"没有找到绑定这个名字的物体name{nameStr}ui{this.gameObject.name}");
2024-10-26 23:50:18 +08:00
}
}
}