はじめに
今回はUnityを強制クラッシュさせるUnityEngine.Diagnostics.Utils.ForceCrash()について紹介したいと思います。
使い方
public static void ForceCrash (Diagnostics.ForcedCrashCategory crashCategory);
Diagnostics.Utils-ForceCrash - Unity スクリプトリファレンス
こちらのメソッドを利用するとアプリケーションがクラッシュします。
また引数のDiagnostics.ForcedCrashCategoryは以下の通り。
| 名前 | 意味 |
|---|---|
| AccessViolation | 不正なメモリアクセスによるクラッシュ |
| FatalError | Unityのネイティブの致命的なエラーによるクラッシュ |
| Abort | abort関数を実行したクラッシュ |
| PureVirtualFunction | pure virtual functionのエラーでのクラッシュ |
iOSでクラッシュ時のハンドリング
UnityにはUnityEngine.CrashReportというクラッシュレポート用のクラスが提供されています。
docs.unity3d.com
これを使ってクラッシュされたときの情報を取得できるみたいです。(ただしiOSのみ対応なので注意!)
一つのアプリケーションクラッシュイベントのデータを保持し、すべての収集されたクラッシュレポートへのアクセスを提供します。
もし適切な設定でコンパイルされると、Unity はアプリケーションがクラッシュしたときに、ロケーションやスレッドスタックトレース有用な情報を収集しようとします。アプリケーションの次の起動時に、もしデータ収集が成功すると、すべてのクラッシュ情報はこの API を通してアクセスできます。
UnityEngine.CrashReport - Unity スクリプトリファレンス
色々と検証してみたかったのですが、iOSビルドするのがめんどくさくてやってないのです。。。
クラッシュ時のハンドリング
iOS以外でもクラッシュレポートが欲しいって場合もあると思うのですが、そのときはUnity Cloud Diagnosticsを利用する手法があります。
unity3d.com