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 1/5] 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
///
From cf19f18662191d4aadd6864f7ae037834815902d Mon Sep 17 00:00:00 2001
From: dvsilch <64416955+dvsilch@users.noreply.github.com>
Date: Fri, 27 Sep 2024 22:57:36 +0800
Subject: [PATCH 2/5] fix: typo
---
src/UniTask/Assets/Tests/AsyncTest.cs | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/UniTask/Assets/Tests/AsyncTest.cs b/src/UniTask/Assets/Tests/AsyncTest.cs
index 29645da..2f07d1e 100644
--- a/src/UniTask/Assets/Tests/AsyncTest.cs
+++ b/src/UniTask/Assets/Tests/AsyncTest.cs
@@ -145,7 +145,7 @@ namespace Cysharp.Threading.TasksTests
public int MyProperty { get; set; }
}
- class MyBoolenClass
+ class MyBooleanClass
{
public bool MyProperty { get; set; }
}
@@ -167,7 +167,7 @@ namespace Cysharp.Threading.TasksTests
[UnityTest]
public IEnumerator WaitUntilWithState() => UniTask.ToCoroutine(async () =>
{
- var v = new MyBoolenClass { MyProperty = false };
+ var v = new MyBooleanClass { MyProperty = false };
UniTask.DelayFrame(10, PlayerLoopTiming.PostLateUpdate).ContinueWith(() => v.MyProperty = true).Forget();
@@ -195,7 +195,7 @@ namespace Cysharp.Threading.TasksTests
[UnityTest]
public IEnumerator WaitWhileWithState() => UniTask.ToCoroutine(async () =>
{
- var v = new MyBoolenClass { MyProperty = true };
+ var v = new MyBooleanClass { MyProperty = true };
UniTask.DelayFrame(10, PlayerLoopTiming.PostLateUpdate).ContinueWith(() => v.MyProperty = false).Forget();
From 353f15e94fbad17c1ae5c4c7bc026674340c2bed Mon Sep 17 00:00:00 2001
From: dvsilch <64416955+dvsilch@users.noreply.github.com>
Date: Fri, 27 Sep 2024 23:43:16 +0800
Subject: [PATCH 3/5] fix: add .Forget() call and rename paramters to keep
coding style consistent
---
.../Plugins/UniTask/Runtime/UniTask.Factory.cs | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs
index 82d44fa..e04949b 100644
--- a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs
+++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs
@@ -190,34 +190,34 @@ namespace Cysharp.Threading.Tasks
///
public static UnityEngine.Events.UnityAction UnityAction(Func asyncAction)
{
- return (state) => asyncAction(state);
+ return (state) => asyncAction(state).Forget();
}
///
/// Create async void(UniTaskVoid) UnityAction.
- /// For example: onClick.AddListener(UniTask.UnityAction(async (T1 s1, T2 s2) => { /* */ } ))
+ /// For example: onClick.AddListener(UniTask.UnityAction(async (T1 state1, T2 state2) => { /* */ } ))
///
public static UnityEngine.Events.UnityAction UnityAction(Func asyncAction)
{
- return (s1, s2) => asyncAction(s1, s2);
+ return (state1, state2) => asyncAction(state1, state2).Forget();
}
///
/// Create async void(UniTaskVoid) UnityAction.
- /// For example: onClick.AddListener(UniTask.UnityAction(async (T1 s1, T2 s2, T3 s3) => { /* */ } ))
+ /// For example: onClick.AddListener(UniTask.UnityAction(async (T1 state1, T2 state2, T3 state3) => { /* */ } ))
///
public static UnityEngine.Events.UnityAction UnityAction(Func asyncAction)
{
- return (s1, s2, s3) => asyncAction(s1, s2, s3);
+ return (state1, state2, state3) => asyncAction(state1, state2, state3).Forget();
}
///
/// Create async void(UniTaskVoid) UnityAction.
- /// For example: onClick.AddListener(UniTask.UnityAction(async (T1 s1, T2 s2, T3 s3, T4 s4) => { /* */ } ))
+ /// For example: onClick.AddListener(UniTask.UnityAction(async (T1 state1, T2 state2, T3 state3, T4 state4) => { /* */ } ))
///
public static UnityEngine.Events.UnityAction UnityAction(Func asyncAction)
{
- return (s1, s2, s3, s4) => asyncAction(s1, s2, s3, s4);
+ return (state1, state2, state3, state4) => asyncAction(state1, state2, state3, state4).Forget();
}
#endif
From bf945a7ef4b4470278f9615343c7c848b22ff3f1 Mon Sep 17 00:00:00 2001
From: dvsilch <64416955+dvsilch@users.noreply.github.com>
Date: Mon, 30 Sep 2024 10:10:35 +0800
Subject: [PATCH 4/5] fix: rename parameters and type parameters
---
.../UniTask/Runtime/UniTask.Factory.cs | 22 +++++++++----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs
index e04949b..1a0030f 100644
--- a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs
+++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs
@@ -186,38 +186,38 @@ namespace Cysharp.Threading.Tasks
///
/// Create async void(UniTaskVoid) UnityAction.
- /// For example: onClick.AddListener(UniTask.UnityAction(async (T state) => { /* */ } ))
+ /// For example: onClick.AddListener(UniTask.UnityAction(async (T arg) => { /* */ } ))
///
public static UnityEngine.Events.UnityAction UnityAction(Func asyncAction)
{
- return (state) => asyncAction(state).Forget();
+ return (arg) => asyncAction(arg).Forget();
}
///
/// Create async void(UniTaskVoid) UnityAction.
- /// For example: onClick.AddListener(UniTask.UnityAction(async (T1 state1, T2 state2) => { /* */ } ))
+ /// For example: onClick.AddListener(UniTask.UnityAction(async (T0 arg0, T1 arg1) => { /* */ } ))
///
- public static UnityEngine.Events.UnityAction UnityAction(Func asyncAction)
+ public static UnityEngine.Events.UnityAction UnityAction(Func asyncAction)
{
- return (state1, state2) => asyncAction(state1, state2).Forget();
+ return (arg0, arg1) => asyncAction(arg0, arg1).Forget();
}
///
/// Create async void(UniTaskVoid) UnityAction.
- /// For example: onClick.AddListener(UniTask.UnityAction(async (T1 state1, T2 state2, T3 state3) => { /* */ } ))
+ /// For example: onClick.AddListener(UniTask.UnityAction(async (T0 arg0, T1 arg1, T2 arg2) => { /* */ } ))
///
- public static UnityEngine.Events.UnityAction UnityAction(Func asyncAction)
+ public static UnityEngine.Events.UnityAction UnityAction(Func asyncAction)
{
- return (state1, state2, state3) => asyncAction(state1, state2, state3).Forget();
+ return (arg0, arg1, arg2) => asyncAction(arg0, arg1, arg2).Forget();
}
///
/// Create async void(UniTaskVoid) UnityAction.
- /// For example: onClick.AddListener(UniTask.UnityAction(async (T1 state1, T2 state2, T3 state3, T4 state4) => { /* */ } ))
+ /// For example: onClick.AddListener(UniTask.UnityAction(async (T0 arg0, T1 arg1, T2 arg2, T3 arg3) => { /* */ } ))
///
- public static UnityEngine.Events.UnityAction UnityAction(Func asyncAction)
+ public static UnityEngine.Events.UnityAction UnityAction(Func asyncAction)
{
- return (state1, state2, state3, state4) => asyncAction(state1, state2, state3, state4).Forget();
+ return (arg0, arg1, arg2, arg3) => asyncAction(arg0, arg1, arg2, arg3).Forget();
}
#endif
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 5/5] 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
///