Unityでコールバックを使わずに他のオブジェクトの処理の完了を受け取る
UnityでAというオブジェクトが、別のBというオブジェクトのアニメーションや処理が終わったことを知りたい場合は、
という手段が挙げられる。 コールバックという方法ですね(たしか)
どちらも間違いではないが、
- Delegateを書くのがめんどくさい
- AとBを相互に参照させたくない(循環参照は避けたい)
ということがあるかと思う。
コルーチンを使って別のオブジェクトの状態を監視する
コルーチンを使えば、シンプルに書くことができる
while文で毎フレーム対象のオブジェクトを監視して、状態が変わったらwhile文を抜けてその次の処理を実行するという仕組み。
シンプルに実装できるので、アニメーションを組み合わせた演出などを作る時に便利。
ただし、Delegateなどに比べると、完了次第すぐに通知できるわけではないので、要注意。
(スクリプトの実行順序によっては、1フレーム待つケースがある)