おしながき
Windows向けのUnityネイティブプラグインを書くときのTipsです。
- ネイティブプラグインをF5でデバッグする方法
- Unityの中でクラッシュしたときのデバッグ方法
- ビルド時にネイティブプラグインをAssets以下に配置する方法
ネイティブプラグインをF5でデバッグする方法
ネイティブプラグインをデバッグするときに「いちいちアタッチするのがめんどくさい」と思う人が多いと思います。
実は、Visual Studioの「デバッグ実行(F5キー)」でUnityを起動するように設定すれば、自動的にネイティブプラグインをデバッグできます。アタッチしたときと同じように、ブレークポイントを張ったり、例外発生時に止めることもできます。
ネイティブプラグインのデバッグ実行時にUnityを立ち上げて自動的にアタッチするには、プロジェクトのプロパティで以下のように設定します。
- コマンド: Unityエディターへのパス
- コマンド引数:
-projectPath [Unityプロジェクトへの絶対パス]
あとはF5キーを押してデバッグ実行するだけで、自動的にUnityが起動してアタッチされます。
Unityの中でクラッシュしたときのデバッグ方法
ネイティブプラグインを開発していると、たまにUnityの中でクラッシュしてしまい、スタックトレースが追えないときがあります。
そんなときは、Unityが提供しているデバッグシンボルサーバーに接続して、せめてでも関数名を見れるようにしましょう。
Unityのデバッグシンボルサーバーについては、Unityのマニュアルに詳細があります。
設定方法は以下の手順のとおりです。
- メニューバーの[デバッグ > オプション]を開く
- 右のペインで[デバッグ > シンボル]ページを開く
- シンボルサーバー
http://symbolserver.unity3d.com
を追加する
最初のデバッグ実行時には長いロード時間がかかりますが、2回目からはキャッシュに保存されるようで早くなります。
これで、UnityのDLLやexe内でブレークした場合でも、スタックトレースで関数名がわかるようになります。
ビルド時にネイティブプラグインをAssets以下に配置する方法
ビルド時にプラグインをAssetsフォルダ以下に配置することができます。
Visual Studioのプロジェクトのプロパティで、ビルド後のイベントを以下のように設定します。
xcopy /Y $(TargetPath) [配置するフォルダへの相対パス]
配置するフォルダへの相対パスは、バックスラッシュで終わっている必要があります。
おわりに
ほかにもネイティブプラグインのTipsがあれば追記なり別ページなりで紹介していくかもしれません。
たとえば…
- 日本語もOKなプラグイン側からのDebug.Log
- 例外発生時に自動でブレーク
- Oculus Goでのストレスフリーなネイティブプラグイン開発
とか書けるとよさそうですね。