Visual Studio でブレークポイントでスクリプトを停止した場合、Unity Editor はフリーズしてしまうので Hierarchy は確認できない。
デバッグを続行すると次のブレークポイント、もしくは Editor が再生中の状態に移るので、手遅れになってしまう。
ブレークポイント時の正確な状態で確認するのは難しそうなので、なるべく近い状態で Editor をポーズする方法を以下に記載する。
Debug.Break()
Editor をポーズするには Debug.Break()
を利用する。
Debug.Break()
は Editor でポーズした時と同様に一時停止することができる。
注意が必要なのは呼び出した瞬間ではなく、呼び出したフレームが終わり、次のフレームに入る前にポーズされること。
イミディエイトウィンドウ
手っ取り早く現在のフレーム後に状態を確認したい場合は、Visual Studioにはイミディエイトウィンドウがあるので、ブレークポイントでデバッグを止めた後 Debug.Break()
を呼ぶ。
これで次のフレーム開始前に、Editorがポーズ状態で待ち構えてくれる。
1フレーム待つ
もう少しスクリプトの途中の状態で確認したい場合は、1フレーム待つことで確認できる場合がある。
オブジェクト間で複雑に状態が絡み合ってる場合には難しいだろうが、処理がクラスやメソッドに閉じている場合には使えるかもしれない。
Debug.Break();
await UniTask.DelayFrame(1);
呼ばれる頻度が高すぎる場合は、以下のようにしておいて必要なタイミングでイミディエイトウィンドウを使って true にしてしまう。
var isBreak = false; if (isBreak) { Debug.Break(); await UniTask.DelayFrame(1); }