- 引入 UniTask 和异步版本的 UIModule - 调整 Runtime/UIBase 和 Presentation 下的脚本命名空间到 SepCore.UI - 将原来的 5 层 UI 迁移到异步实现 - 规范各层的 UI 脚本命名
33 lines
942 B
C#
33 lines
942 B
C#
#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
|
|
|
|
using System.Threading;
|
|
using UnityEngine;
|
|
|
|
namespace Cysharp.Threading.Tasks.Triggers
|
|
{
|
|
public static partial class AsyncTriggerExtensions
|
|
{
|
|
public static AsyncAwakeTrigger GetAsyncAwakeTrigger(this GameObject gameObject)
|
|
{
|
|
return GetOrAddComponent<AsyncAwakeTrigger>(gameObject);
|
|
}
|
|
|
|
public static AsyncAwakeTrigger GetAsyncAwakeTrigger(this Component component)
|
|
{
|
|
return component.gameObject.GetAsyncAwakeTrigger();
|
|
}
|
|
}
|
|
|
|
[DisallowMultipleComponent]
|
|
public sealed class AsyncAwakeTrigger : AsyncTriggerBase<AsyncUnit>
|
|
{
|
|
public UniTask AwakeAsync()
|
|
{
|
|
if (calledAwake) return UniTask.CompletedTask;
|
|
|
|
return ((IAsyncOneShotTrigger)new AsyncTriggerHandler<AsyncUnit>(this, true)).OneShotAsync();
|
|
}
|
|
}
|
|
}
|
|
|