diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs
index 8d4f0c5..8bdec75 100644
--- a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs
+++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs
@@ -184,6 +184,78 @@ namespace Cysharp.Threading.Tasks
return () => asyncAction(state).Forget();
}
+ ///
+ /// Create async void(UniTaskVoid) UnityAction.
+ /// For example: onClick.AddListener(UniTask.UnityAction(async (T arg) => { /* */ } ))
+ ///
+ public static UnityEngine.Events.UnityAction UnityAction(Func asyncAction)
+ {
+ return (arg) => asyncAction(arg).Forget();
+ }
+
+ ///
+ /// Create async void(UniTaskVoid) UnityAction.
+ /// For example: onClick.AddListener(UniTask.UnityAction(async (T0 arg0, T1 arg1) => { /* */ } ))
+ ///
+ public static UnityEngine.Events.UnityAction UnityAction(Func asyncAction)
+ {
+ return (arg0, arg1) => asyncAction(arg0, arg1).Forget();
+ }
+
+ ///
+ /// Create async void(UniTaskVoid) UnityAction.
+ /// For example: onClick.AddListener(UniTask.UnityAction(async (T0 arg0, T1 arg1, T2 arg2) => { /* */ } ))
+ ///
+ public static UnityEngine.Events.UnityAction UnityAction(Func asyncAction)
+ {
+ return (arg0, arg1, arg2) => asyncAction(arg0, arg1, arg2).Forget();
+ }
+
+ ///
+ /// Create async void(UniTaskVoid) UnityAction.
+ /// For example: onClick.AddListener(UniTask.UnityAction(async (T0 arg0, T1 arg1, T2 arg2, T3 arg3) => { /* */ } ))
+ ///
+ public static UnityEngine.Events.UnityAction UnityAction(Func asyncAction)
+ {
+ 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
///
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();