TaskCompletionSource を使用する
Timelineを再生し終了するまでのTask
public async Task ShowAhimAsync(CancellationToken token = default) { var tcs = new TaskCompletionSource<int>(); System.Action<PlayableDirector> handler = null; handler = (obj) => { playableDirector.stopped -= handler; tcs.SetResult(0); }; playableDirector.stopped += handler; playableDirector.time = 0; playableDirector.Play(showAsset, DirectorWrapMode.None); using(token.Register(() => { // キャンセル発生時の処理 playableDirector.stopped -= handler; tcs.SetCanceled(); })) { await tcs.Task; } }
var tcs = new TaskCompletionSource();
としたかったが、Unityでは使えないのか引数は必要なかったがnew TaskCompletionSource<int>()
を使用している。