From 7bb3bf8d0e6c4dcc8019b5bd0b55ed7da771c1f9 Mon Sep 17 00:00:00 2001 From: Kochoyume <78918084+kochounoyume@users.noreply.github.com> Date: Tue, 30 Jan 2024 11:49:53 +0900 Subject: [PATCH] Update UniTask.Create, Unitask.Action and UniTask.UnityAction --- .../UniTask/Runtime/UniTask.Factory.cs | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs index 2f6a6a9..6bff0ef 100644 --- a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs +++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs @@ -81,6 +81,16 @@ namespace Cysharp.Threading.Tasks return factory(); } + public static UniTask Create(Func factory, CancellationToken cancellationToken) + { + return factory(cancellationToken); + } + + public static UniTask Create(Func factory, T state) + { + return factory(state); + } + public static UniTask Create(Func> factory) { return factory(); @@ -137,6 +147,14 @@ namespace Cysharp.Threading.Tasks return () => asyncAction(cancellationToken).Forget(); } + /// + /// helper of create add UniTaskVoid to delegate. + /// + public static Action Action(Func asyncAction, T state) + { + return () => asyncAction(state).Forget(); + } + #if UNITY_2018_3_OR_NEWER /// @@ -157,6 +175,15 @@ namespace Cysharp.Threading.Tasks return () => asyncAction(cancellationToken).Forget(); } + /// + /// Create async void(UniTaskVoid) UnityAction. + /// For exampe: onClick.AddListener(UniTask.UnityAction(FooAsync, this.GetCancellationTokenOnDestroy())) + /// + public static UnityEngine.Events.UnityAction UnityAction(Func asyncAction, T state) + { + return () => asyncAction(state).Forget(); + } + #endif ///