はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】Unityを強制クラッシュさせるUtils.ForceCrashメソッドについて

はじめに

今回は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のエラーでのクラッシュ

ForcedCrashCategory - Unity スクリプトリファレンス

iOSでクラッシュ時のハンドリング

UnityにはUnityEngine.CrashReportというクラッシュレポート用のクラスが提供されています。
docs.unity3d.com

これを使ってクラッシュされたときの情報を取得できるみたいです。(ただしiOSのみ対応なので注意!)

一つのアプリケーションクラッシュイベントのデータを保持し、すべての収集されたクラッシュレポートへのアクセスを提供します。

もし適切な設定でコンパイルされると、Unity はアプリケーションがクラッシュしたときに、ロケーションやスレッドスタックトレース有用な情報を収集しようとします。アプリケーションの次の起動時に、もしデータ収集が成功すると、すべてのクラッシュ情報はこの API を通してアクセスできます。

UnityEngine.CrashReport - Unity スクリプトリファレンス

色々と検証してみたかったのですが、iOSビルドするのがめんどくさくてやってないのです。。。

クラッシュ時のハンドリング

iOS以外でもクラッシュレポートが欲しいって場合もあると思うのですが、そのときはUnity Cloud Diagnosticsを利用する手法があります。
unity3d.com

www.hanachiru-blog.com