結論
- OnDisable() 内にログ仕込めばOK
Destroyを呼んだ瞬間は非アクティブになるだけで、実体はまだ消滅していない。
実際にDestroyされるのは同フレームのLateUpdateより後のタイミングになる。
実験
以下のようなコンポーネントを適当なオブジェクトにつけて実行
public class DelayDestroy : MonoBehaviour
{
private IEnumerator Start()
{
yield return new WaitForSeconds(3.0f);
Destroy(this.gameObject);
}
void OnDisable()
{
Debug.Log("スタックトレースにDestroyを呼んだコードが出る");
}
void OnDestroy()
{
Debug.Log("この行からしかスタックトレースに出ない");
}
}