From a51632cd4b2512e7f14e89e5ffcf91dd3bf742d8 Mon Sep 17 00:00:00 2001 From: dvsilch <64416955+dvsilch@users.noreply.github.com> Date: Mon, 30 Sep 2024 10:13:29 +0800 Subject: [PATCH] fix: add overloads for CancellationToken --- .../UniTask/Runtime/UniTask.Factory.cs | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs index 1a0030f..8bdec75 100644 --- a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs +++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs @@ -220,6 +220,42 @@ namespace Cysharp.Threading.Tasks return (arg0, arg1, arg2, arg3) => asyncAction(arg0, arg1, arg2, arg3).Forget(); } + // + /// Create async void(UniTaskVoid) UnityAction. + /// For example: onClick.AddListener(UniTask.UnityAction(async (T arg, CancellationToken cancellationToken) => { /* */ } )) + /// + public static UnityEngine.Events.UnityAction UnityAction(Func asyncAction, CancellationToken cancellationToken) + { + return (arg) => asyncAction(arg, cancellationToken).Forget(); + } + + /// + /// Create async void(UniTaskVoid) UnityAction. + /// For example: onClick.AddListener(UniTask.UnityAction(async (T0 arg0, T1 arg1, CancellationToken cancellationToken) => { /* */ } )) + /// + public static UnityEngine.Events.UnityAction UnityAction(Func asyncAction, CancellationToken cancellationToken) + { + return (arg0, arg1) => asyncAction(arg0, arg1, cancellationToken).Forget(); + } + + /// + /// Create async void(UniTaskVoid) UnityAction. + /// For example: onClick.AddListener(UniTask.UnityAction(async (T0 arg0, T1 arg1, T2 arg2, CancellationToken cancellationToken) => { /* */ } )) + /// + public static UnityEngine.Events.UnityAction UnityAction(Func asyncAction, CancellationToken cancellationToken) + { + return (arg0, arg1, arg2) => asyncAction(arg0, arg1, arg2, cancellationToken).Forget(); + } + + /// + /// Create async void(UniTaskVoid) UnityAction. + /// For example: onClick.AddListener(UniTask.UnityAction(async (T0 arg0, T1 arg1, T2 arg2, T3 arg3, CancellationToken cancellationToken) => { /* */ } )) + /// + public static UnityEngine.Events.UnityAction UnityAction(Func asyncAction, CancellationToken cancellationToken) + { + return (arg0, arg1, arg2, arg3) => asyncAction(arg0, arg1, arg2, arg3, cancellationToken).Forget(); + } + #endif ///