using System; using JetBrains.Annotations; using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; namespace Framework.Wrapper { public class UIGameObjectWrapper : GameObjectWrapper { public UIGameObjectWrapper(GameObject go) : base(go) { } public GameObject TryGetItem(string key) { if (key == null) { return null; } if (string.IsNullOrEmpty(key)) { return _gameObject; } var obj = _gameObject.transform.Find(key)?.gameObject; return obj; } public T TryGetItem(string key) where T : Component { var child = TryGetItem(key); return TryGetItem(child); } public T TryGetItem() where T : Component { return TryGetItem(_gameObject); } public T TryGetItem(GameObject go) where T : Component { return go?.GetComponent(); } public GameObject GetItem(string key) { var obj = TryGetItem(key); if (obj == null) { DebugUtil.LogError("GetItem failed, window controller name : {0}, key = {1}", GetType(), key); } return obj; } public T GetItem(string key) where T : Component { var child = GetItem(key); return GetItem(child); } public T GetItem() where T : Component { return GetItem(_gameObject); } public T GetItem(GameObject go) where T : Component { if (go != null) { var com = TryGetItem(go); if (com == null) { DebugUtil.LogError("GetItem failed, window controller name : {0}, game object name = {1}, Component type:{2}",GetType(),go.name,typeof(T)); } return com; } return default(T); } public Button BindButton(string key, UnityAction action) { Button button = GetItem