using System; using System.Collections.Generic; using Cysharp.Threading.Tasks; using PhxhSDK; using UnityEngine; using UnityEngine.UI; using Object = UnityEngine.Object; public class UINode: MonoBehaviour { protected List LoadedAssets = new List(); public static UINode LoadNode() { return null; } protected void ClearBind(Button button) { button.onClick.RemoveAllListeners(); } protected void BindButton(Button button, Action func) { button.onClick.AddListener(() => { func?.Invoke(); }); } protected void BindButton(Button button, Action func, T param) { button.onClick.AddListener(() => { func?.Invoke(param); }); } protected void BindButton(Button button, Action func, T param1, TK param2) { button.onClick.AddListener(() => { func?.Invoke(param1, param2); }); } protected T _GetComponent(string path) where T: Behaviour { var compGo = transform.Find(path).gameObject; if (compGo) { return compGo.GetComponent(); } DebugUtil.LogError($"{name}未找到组件{typeof(T).Name}: {path}"); return null; } protected GameObject _FindObj(string path) { var compGo = transform.Find(path).gameObject; if (compGo) { return compGo; } DebugUtil.LogError($"{name}未找到节点:{path}"); return null; } protected async UniTask LoadAssetAsync(string path) where T : Object { var asset = await AssetManager.Instance.LoadAssetAsync(path); if (!LoadedAssets.Contains(path)) { LoadedAssets.Add(path); } return asset; } protected T LoadAsset(string path) where T : Object { return AssetManager.Instance.LoadAsset(path); } public virtual void OnAwake() { } public virtual void OnStart() { } public virtual void OnUpdate() { } public virtual void SetData(object data) { } public virtual void OnShow() { } public virtual void OnHide() { } public virtual void OnRelease() { for (int i = 0; i < LoadedAssets.Count; i++) { AssetManager.Instance.Unload(LoadedAssets[i]); } LoadedAssets.Clear(); } }