From fdb9d1cf95a1337983c94b133e49028169b44138 Mon Sep 17 00:00:00 2001
From: dvsilch <64416955+dvsilch@users.noreply.github.com>
Date: Fri, 27 Sep 2024 22:57:05 +0800
Subject: [PATCH] feature: add overload in UniTask.UnityAction to support
generic type UnityAction
---
.../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 8d4f0c5..82d44fa 100644
--- a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs
+++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs
@@ -184,6 +184,42 @@ namespace Cysharp.Threading.Tasks
return () => asyncAction(state).Forget();
}
+ ///
+ /// Create async void(UniTaskVoid) UnityAction.
+ /// For example: onClick.AddListener(UniTask.UnityAction(async (T state) => { /* */ } ))
+ ///
+ public static UnityEngine.Events.UnityAction UnityAction(Func asyncAction)
+ {
+ return (state) => asyncAction(state);
+ }
+
+ ///
+ /// Create async void(UniTaskVoid) UnityAction.
+ /// For example: onClick.AddListener(UniTask.UnityAction(async (T1 s1, T2 s2) => { /* */ } ))
+ ///
+ public static UnityEngine.Events.UnityAction UnityAction(Func asyncAction)
+ {
+ return (s1, s2) => asyncAction(s1, s2);
+ }
+
+ ///
+ /// Create async void(UniTaskVoid) UnityAction.
+ /// For example: onClick.AddListener(UniTask.UnityAction(async (T1 s1, T2 s2, T3 s3) => { /* */ } ))
+ ///
+ public static UnityEngine.Events.UnityAction UnityAction(Func asyncAction)
+ {
+ return (s1, s2, s3) => asyncAction(s1, s2, s3);
+ }
+
+ ///
+ /// Create async void(UniTaskVoid) UnityAction.
+ /// For example: onClick.AddListener(UniTask.UnityAction(async (T1 s1, T2 s2, T3 s3, T4 s4) => { /* */ } ))
+ ///
+ public static UnityEngine.Events.UnityAction UnityAction(Func asyncAction)
+ {
+ return (s1, s2, s3, s4) => asyncAction(s1, s2, s3, s4);
+ }
+
#endif
///