Unity
[Unity] UniTask + Action + Lambda 고찰
성엽이
2023. 5. 16. 11:38
public static class UniTaskHelper {
public static Action<T> Action<T>(Func<T, UniTaskVoid> asyncAction) {
return (t1) => asyncAction(t1).Forget();
}
}
Action<GameScene> _fooAction;
void Awake() {
_fooAction = UniTaskHelper.Action<GameScene>(OnSceneReady);
}
void OnEnable() {
_sceneReadyEvent += _fooAction;
}
void OnDisable() {
_sceneReadyEvent -= _fooAction;
}
async UniTaskVoid OnSceneReady(GameScene scene) {
_logger.Info("Scene ready: " + scene);
// await something
await UniTask.Yield();
}
https://github.com/Cysharp/UniTask/issues/329
How do you pass parameter types to a "UniTask.Action"? · Issue #329 · Cysharp/UniTask
How do you pass parameter types to a "UniTask.Action"? void OnEnable() { _loadSceneEvent.Register(UniTask.Action(OnLoadScene)); // this doesnt work, need to use regular "async void" callback or del...
github.com
UniTask 에서 지원하지않는 UniTask.Action<T> 사용해보기.
event Action<T> Callback 에 Lambda 를 사용해서 Parameter 를 전달받기 위해서 Func 를 이용하면 가능.