つくるの大好き。

つくるのが大好きな人の記録。

UnityネイティブプラグインをVisual Studio でステップ実行デバッグする

Unityのネイティブプラグインを開発していると、Unityで実行中にプラグイン内部のコードや変数の状態をデバッグしたくなる時がよくありますよね。
これは簡単な手順で行うことができるので手順を書いておきます。

デバッグ実行できる条件

つまり自作プラグインオープンソースのものであればデバッグ可能です。
反対に .dllファイルだけ提供されているようなプラグインデバッグできないということです。

デバッグ実行するための手順

ネイティブプラグインをDebugビルドする

Debug構成でプラグインをビルドします。 f:id:peugeot-106-s16:20190730153551p:plain

ビルドが成功すると .dllファイルと .pdbファイルが出力されます。 f:id:peugeot-106-s16:20190730153721p:plain

Unityのプラグインフォルダに必要なファイルを配置する

.dllファイルと .pdbファイルをUnity内のPluginsフォルダに配置します。 f:id:peugeot-106-s16:20190730153944p:plain

Visual StidoからUnityにアタッチする

Unityプロジェクトを開いたのち、プラグインプロジェクトを開いているVisual Studio の [デバッグ]-[プロセスにアタッチ]メニューを選択します。
"プロセスにアタッチ"ダイアログが表示されるのでUnityのプロセスを選択して[アタッチ]します。
プロセスはたくさん列挙されますが"unity"で絞り込めば見つけやすいです。 f:id:peugeot-106-s16:20190730154349p:plain

ブレークポイントの設定を行う

ステップ実行したい部分にブレークポイントを設定しましょう。

UnityでPlayする

この状態でUnityでPlayすると、なんということでしょう。
プラグイン側のソースコード上のブレークポイントが効きましたね。
もちろん、普通にステップ実行ができますし、変数の内容もウォッチすることができます。 f:id:peugeot-106-s16:20190730155029p:plain

ブレークポイントが効かない時は

プラグインプロジェクト側とUnity側で .dllファイルと .pdbファイルのバージョンが一致していないことが原因として考えられます。
再ビルドとUnityへのファイル更新を再度行ったり、Unityの再起動を行ってみてください。

まとめ

これでプラグインを絡めてUnityアプリケーションを開発するスピードが爆上がりですね(笑)!