Skip to content

Commit fdb9d1c

Browse files
committed
feature: add overload in UniTask.UnityAction to support generic type UnityAction
1 parent 2e09174 commit fdb9d1c

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

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

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,42 @@ public static UnityEngine.Events.UnityAction UnityAction<T>(T state, Func<T, Uni
184184
return () => asyncAction(state).Forget();
185185
}
186186

187+
/// <summary>
188+
/// Create async void(UniTaskVoid) UnityAction.
189+
/// For example: onClick.AddListener(UniTask.UnityAction(async (T state) => { /* */ } ))
190+
/// </summary>
191+
public static UnityEngine.Events.UnityAction<T> UnityAction<T>(Func<T, UniTaskVoid> asyncAction)
192+
{
193+
return (state) => asyncAction(state);
194+
}
195+
196+
/// <summary>
197+
/// Create async void(UniTaskVoid) UnityAction.
198+
/// For example: onClick.AddListener(UniTask.UnityAction(async (T1 s1, T2 s2) => { /* */ } ))
199+
/// </summary>
200+
public static UnityEngine.Events.UnityAction<T1, T2> UnityAction<T1, T2>(Func<T1, T2, UniTaskVoid> asyncAction)
201+
{
202+
return (s1, s2) => asyncAction(s1, s2);
203+
}
204+
205+
/// <summary>
206+
/// Create async void(UniTaskVoid) UnityAction.
207+
/// For example: onClick.AddListener(UniTask.UnityAction(async (T1 s1, T2 s2, T3 s3) => { /* */ } ))
208+
/// </summary>
209+
public static UnityEngine.Events.UnityAction<T1, T2, T3> UnityAction<T1, T2, T3>(Func<T1, T2, T3, UniTaskVoid> asyncAction)
210+
{
211+
return (s1, s2, s3) => asyncAction(s1, s2, s3);
212+
}
213+
214+
/// <summary>
215+
/// Create async void(UniTaskVoid) UnityAction.
216+
/// For example: onClick.AddListener(UniTask.UnityAction(async (T1 s1, T2 s2, T3 s3, T4 s4) => { /* */ } ))
217+
/// </summary>
218+
public static UnityEngine.Events.UnityAction<T1, T2, T3, T4> UnityAction<T1, T2, T3, T4>(Func<T1, T2, T3, T4, UniTaskVoid> asyncAction)
219+
{
220+
return (s1, s2, s3, s4) => asyncAction(s1, s2, s3, s4);
221+
}
222+
187223
#endif
188224

189225
/// <summary>

0 commit comments

Comments
 (0)