destroyCancellationTokenとは?
destroyCancellationTokenはMonoBehaviourのプロパティで、
GameObjectやMonoBehaviourが破棄(Destroy)されたタイミングでキャンセルされるCancellationTokenを取得できます。
Unity2023.1以降で使用できます。
使い方1
以下のスクリプトを用意しました。
public class DestroyCancellationTokenSample : MonoBehaviour
{
private async void Start()
{
try
{
await Task.Delay(3000, destroyCancellationToken);
Debug.Log("Task completed successfully.");
}
catch (OperationCanceledException)
{
Debug.Log("Task Canceled.");
}
}
}
Startメソッドを非同期で実行し、3000ミリ秒待機します。
時間が経過する前にGameObjectが破棄された場合は、例外が発生しcatch側が呼ばれます。
使い方2
以下のサンプルでは、destroyCancellationTokenのRegisterメソッドに、
GameObjectが破棄されるタイミングで実行される処理を登録することができます。
public class DestroyCancellationTokenSample : MonoBehaviour
{
private void Awake()
{
destroyCancellationToken.Register(() =>
{
Debug.Log("Canceled.");
});
}
}
これは非同期処理に限らず、オブジェクトの破棄に合わせて後始末の処理を行いたい時に便利です。
UIのイベントを解除する- オブジェクトが破棄される際にログを取る
MonoBehaviourを継承していない純粋なクラスの後処理を呼ぶ
などに使用できます。
まとめ
destroyCancellationTokenはUnity2023以降に追加された比較的新しい機能です。
非同期処理のキャンセル用トークンとして使用できます。
非同期処理でなくてもコールバックを登録しておくことで、破棄されるタイミングで処理を呼び、
イベントを解除したりメモリを解放したりできます。
機会があれば是非使ってみてください。
📣おしらせ!
Unity Asset Storeで BLACK FRIDAY セール が開催中です。
300以上の人気アセットを50%オフで購入するチャンス。
フラッシュセールでは最大95%オフも?
セールは 2025年12月11日午前1時(日本時間)に終了します。