Windows
VisualStudio
Unity
ネイティブプラグイン

ストレスフリーなWindowsネイティブプラグイン開発

おしながき

Windows向けのUnityネイティブプラグインを書くときのTipsです。

  • ネイティブプラグインをF5でデバッグする方法
  • Unityの中でクラッシュしたときのデバッグ方法
  • ビルド時にネイティブプラグインをAssets以下に配置する方法

ネイティブプラグインをF5でデバッグする方法

ネイティブプラグインをデバッグするときに「いちいちアタッチするのがめんどくさい」と思う人が多いと思います。
実は、Visual Studioの「デバッグ実行(F5キー)」でUnityを起動するように設定すれば、自動的にネイティブプラグインをデバッグできます。アタッチしたときと同じように、ブレークポイントを張ったり、例外発生時に止めることもできます。

ネイティブプラグインのデバッグ実行時にUnityを立ち上げて自動的にアタッチするには、プロジェクトのプロパティで以下のように設定します。

  • コマンド: Unityエディターへのパス
  • コマンド引数: -projectPath [Unityプロジェクトへの絶対パス]

Debugger Configuration.png

あとはF5キーを押してデバッグ実行するだけで、自動的にUnityが起動してアタッチされます。

Unityの中でクラッシュしたときのデバッグ方法

ネイティブプラグインを開発していると、たまにUnityの中でクラッシュしてしまい、スタックトレースが追えないときがあります。
そんなときは、Unityが提供しているデバッグシンボルサーバーに接続して、せめてでも関数名を見れるようにしましょう。

Unityのデバッグシンボルサーバーについては、Unityのマニュアルに詳細があります。

設定方法は以下の手順のとおりです。

  1. メニューバーの[デバッグ > オプション]を開く
  2. 右のペインで[デバッグ > シンボル]ページを開く
  3. シンボルサーバーhttp://symbolserver.unity3d.comを追加する

Debug Symbol Server.png

最初のデバッグ実行時には長いロード時間がかかりますが、2回目からはキャッシュに保存されるようで早くなります。
これで、UnityのDLLやexe内でブレークした場合でも、スタックトレースで関数名がわかるようになります。

ビルド時にネイティブプラグインをAssets以下に配置する方法

ビルド時にプラグインをAssetsフォルダ以下に配置することができます。
Visual Studioのプロジェクトのプロパティで、ビルド後のイベントを以下のように設定します。
xcopy /Y $(TargetPath) [配置するフォルダへの相対パス]
配置するフォルダへの相対パスは、バックスラッシュで終わっている必要があります。

Post Build Event.png

おわりに

ほかにもネイティブプラグインのTipsがあれば追記なり別ページなりで紹介していくかもしれません。
たとえば…

  • 日本語もOKなプラグイン側からのDebug.Log
  • 例外発生時に自動でブレーク
  • Oculus Goでのストレスフリーなネイティブプラグイン開発

とか書けるとよさそうですね。