Skip to content

Commit 0c8057c

Browse files
authored
Merge pull request #538 from kochounoyume/argument-allowed-factory
Factory method allowed argument
2 parents d057074 + 2886764 commit 0c8057c

File tree

1 file changed

+29
-2
lines changed

1 file changed

+29
-2
lines changed

src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.Factory.cs

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,16 @@ public static UniTask Create(Func<UniTask> factory)
8181
return factory();
8282
}
8383

84+
public static UniTask Create(Func<CancellationToken, UniTask> factory, CancellationToken cancellationToken)
85+
{
86+
return factory(cancellationToken);
87+
}
88+
89+
public static UniTask Create<T>(T state, Func<T, UniTask> factory)
90+
{
91+
return factory(state);
92+
}
93+
8494
public static UniTask<T> Create<T>(Func<UniTask<T>> factory)
8595
{
8696
return factory();
@@ -137,11 +147,19 @@ public static Action Action(Func<CancellationToken, UniTaskVoid> asyncAction, Ca
137147
return () => asyncAction(cancellationToken).Forget();
138148
}
139149

150+
/// <summary>
151+
/// helper of create add UniTaskVoid to delegate.
152+
/// </summary>
153+
public static Action Action<T>(T state, Func<T, UniTaskVoid> asyncAction)
154+
{
155+
return () => asyncAction(state).Forget();
156+
}
157+
140158
#if UNITY_2018_3_OR_NEWER
141159

142160
/// <summary>
143161
/// Create async void(UniTaskVoid) UnityAction.
144-
/// For exampe: onClick.AddListener(UniTask.UnityAction(async () => { /* */ } ))
162+
/// For example: onClick.AddListener(UniTask.UnityAction(async () => { /* */ } ))
145163
/// </summary>
146164
public static UnityEngine.Events.UnityAction UnityAction(Func<UniTaskVoid> asyncAction)
147165
{
@@ -150,13 +168,22 @@ public static UnityEngine.Events.UnityAction UnityAction(Func<UniTaskVoid> async
150168

151169
/// <summary>
152170
/// Create async void(UniTaskVoid) UnityAction.
153-
/// For exampe: onClick.AddListener(UniTask.UnityAction(FooAsync, this.GetCancellationTokenOnDestroy()))
171+
/// For example: onClick.AddListener(UniTask.UnityAction(FooAsync, this.GetCancellationTokenOnDestroy()))
154172
/// </summary>
155173
public static UnityEngine.Events.UnityAction UnityAction(Func<CancellationToken, UniTaskVoid> asyncAction, CancellationToken cancellationToken)
156174
{
157175
return () => asyncAction(cancellationToken).Forget();
158176
}
159177

178+
/// <summary>
179+
/// Create async void(UniTaskVoid) UnityAction.
180+
/// For example: onClick.AddListener(UniTask.UnityAction(FooAsync, Argument))
181+
/// </summary>
182+
public static UnityEngine.Events.UnityAction UnityAction<T>(T state, Func<T, UniTaskVoid> asyncAction)
183+
{
184+
return () => asyncAction(state).Forget();
185+
}
186+
160187
#endif
161188

162189
/// <summary>

0 commit comments

Comments
 (0)