using Cysharp.Threading.Tasks; using PMaker.UI; using System.Threading; using UnityEditor; namespace PMaker.Await { public static class PageExtension { public static async UniTask WaitUI(this Page page, string name, CancellationToken cancellationToken = default) { var ui = page.transform.Find(name).GetComponent(); await ui.WaitAsync(cancellationToken); } public static async UniTask WaitAllUI(this Page page, string name, CancellationToken cancellationToken = default) { var ui = page.transform.Find(name).GetComponents(); foreach (var item in ui) { await item.WaitAsync(cancellationToken); } } public static T GetUI(this Page page, string name) { return page.transform.Find(name).GetComponent(); } public static T[] GetUIs(this Page page) { return page.GetComponentsInChildren(true); } public static void ShowUI(this Page page, string name) { var ui = page.transform.Find(name).gameObject; ui.SetActive(true); } public static void HideUI(this Page page, string name) { var ui = page.transform.Find(name).gameObject; ui.SetActive(false); } public static void ShowOrHide(this Page page, string name) { var ui = page.transform.Find(name).gameObject; ui.SetActive(!ui.activeSelf); } } }