1
0
Fork 0
LaboratoryProtection/Assets/PMaker/Scripts/Await/Extension/PageExtension.cs

57 lines
1.6 KiB
C#
Raw Permalink Normal View History

2023-09-12 15:55:51 +08:00
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<AwaitBehaviour>();
await ui.WaitAsync(cancellationToken);
}
public static async UniTask WaitAllUI(this Page page, string name, CancellationToken cancellationToken = default)
{
var ui = page.transform.Find(name).GetComponents<AwaitBehaviour>();
foreach (var item in ui)
{
await item.WaitAsync(cancellationToken);
}
}
public static T GetUI<T>(this Page page, string name)
{
return page.transform.Find(name).GetComponent<T>();
}
public static T[] GetUIs<T>(this Page page)
{
return page.GetComponentsInChildren<T>(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);
}
}
}