Unity×Visual Studio 連携でC#デバッグを始めよう
~Debug Mode の切り替え方法も徹底解説~
はじめに
Unity のプロジェクトでゲームを開発していると、コードのバグや想定外の挙動を追跡する必要が出てきます。そこで役立つのが、Visual Studio と連携したブレークポイントによるデバッグです。本資料では、Debug Mode の切り替え方法を含め、Unity と Visual Studio を使ったデバッグ手順をチュートリアル形式で紹介します。また、常にデバッグモードにしておく場合の利点と、必要なときだけ一時的にデバッグモードに切り替える方法についても解説します。
1. Visual Studio の準備
1.1 Visual Studio のインストール
- Visual Studio (Community / Professional / Enterprise) をインストールしてください。
- 近年の Visual Studio には Visual Studio Tools for Unity が標準で含まれているため、追加インストールは不要な場合が多いです。
- 古いバージョンを使用している場合は、拡張機能としてインストールが必要になることがあります。
1.2 Unity の External Script Editor の設定
- Unity のメニューから Edit > Preferences… (Mac の場合は Unity > Preferences…)を選択します。
- External Tools タブで External Script Editor を “Visual Studio” に設定します。
- これにより、Unity エディターでスクリプトをダブルクリックすると、自動的に Visual Studio が起動またはフォーカスされるようになります。
2. Debug Mode の切り替え
Unity では、Debug Mode(デバッグモード)と Release Mode(最適化モード)を切り替えてスクリプトをコンパイルできます。Debug Mode はブレークポイントやウォッチなどの詳細なデバッグ情報を提供しますが、パフォーマンスに影響を与える場合があります。
2.1 エディター右下から切り替える
- Unity エディターの右下に「Mode: Release」または「Mode: Debug」と表示される箇所があります。
- Mode: Release → クリック → 「Switch to debug mode」を選択すると、Debug Mode に切り替わり、スクリプトが再コンパイルされます。
- Mode: Debug → クリック → 「Switch to release mode」を選択すると、Release Mode に戻ります。

2.2 Preferences から切り替える
- Edit > Preferences… (Mac の場合は Unity > Preferences…)を開き、General タブを選択します。
- Code Optimization On Startup という項目がある場合、ここで
Debug
/Release
を切り替え可能です。 - 切り替え時にはスクリプトの再コンパイルが走るため、Play中であれば停止してから実施しましょう。
2.3 常に Debug Mode にする場合と一時的に切り替える場合の利点
- 常に Debug Mode にしておく利点
- 毎回モードを切り替える手間がなく、どのタイミングでも即座にデバッグ機能(ブレークポイント、ウォッチ、コールスタックなど)を利用できます。
- 問題発生時にすぐデバッグを開始でき、即時フィードバックを得ることが可能です。
- 一時的に Debug Mode に切り替える利点
- 通常の動作やパフォーマンステスト時は Release Mode で最適化された状態を維持し、必要なときだけ Debug Mode に切り替えることで、パフォーマンスへの影響を最小限に抑えられます。
- 特にブレークポイントを使用してデバッグするタイミングでのみ Debug Mode にするのは、開発とパフォーマンス検証の両方をバランスよく行う方法です。
補足:
Debug Mode はブレークポイントを使ったデバッグが可能ですが、実行時のパフォーマンスが低下するため、リリース時やパフォーマンス検証時には Release Mode に戻すのが一般的です。
通常、リリースモードにしておくと良いでしょう
VisualStudioでデバッグする時に次のメッセージが表示されます
ここでは、Enable debugging for this sessionを選択しましょう

このポップアップは、Unity の C# デバッガをアタッチしようとした際に、現在のプロジェクトが “Debug Mode” に設定されていないために表示されるダイアログです。主に次のような内容を伝えています:
翻訳
C# Debugger Attached
デバッガをアタッチしようとしていますが、現在のプロジェクトで Debug Mode がオフになっています。
Unity を Debug Mode にすると C# のパフォーマンスは低下しますが、デバッガをアタッチできるようになります。Debug Mode に切り替えると、すべてのスクリプトが再コンパイルおよび再読み込みされます。
このエディター セッションのみ一時的に Debug Mode を有効にするか、今後すべてのプロジェクトに対して Debug Mode を有効にするか、またはデバッガのアタッチを取り消すことができます。
すべてのプロジェクトに対して有効にした場合は、後から「Preferences」内の「Code Optimization on Startup」の設定で変更できます。
(全文はエディターのログファイルを参照してください)
- Enable debugging for this session(このセッションのみデバッグを有効にする)
- Enable debugging for all projects(すべてのプロジェクトでデバッグを有効にする)
- Debug Mode がオフになっている
- Unity では、プロジェクトの C# コードを「Debug Mode」または「Release Mode」(最適化モード) でコンパイルできます。
- Debug Mode ではパフォーマンスが低下する代わりに、デバッガのアタッチやブレークポイントの使用などが可能になります。
- 現在は Debug Mode が無効(= Release Mode に近い状態) になっているので、デバッガをアタッチできない。
- Debug Mode をオンにすると再コンパイルが走る
- Debug Mode に切り替えると、スクリプトを再コンパイル・再読み込みする必要があるため、エディタが一度リフレッシュされる。
- 一時的に有効にするか、すべてのプロジェクトに対して有効にするかを選べる
- 「Enable debugging for this session (このセッションのみ有効)」を選ぶと、現在のエディタを起動している間だけ Debug Mode になる。
- 「Enable debugging for all projects (すべてのプロジェクトで有効)」を選ぶと、Unity エディタ全体で今後も常に Debug Mode になる。
- もちろん「Cancel (取り消し)」すれば、そのままデバッガなしで続行できる。
- 後から設定を変更するには “Code Optimization on Startup” の設定を使う
- Unity エディタの Preferences(「Edit > Preferences…」など)内に “Code Optimization on Startup” という項目があり、Debug / Release の切り替えが可能。
- そこで設定を変更すれば、起動時に自動で Debug Mode にするかどうかを切り替えられる。
対処法
- 一時的にデバッグしたい場合: 「Enable debugging for this session」をクリックする。これでエディタが再読み込みされた後、Visual Studio や Rider などからブレークポイントを使ってデバッグできるようになる。
- 今後ずっとデバッグしたい場合: 「Enable debugging for all projects」をクリックする。常時 Debug Mode になるが、その分パフォーマンスは落ちる可能性がある。
- Debug Mode にしたくない場合: 「Cancel」を選択してデバッガのアタッチをやめる。
注意点
- Debug Mode はビルドしたアプリのパフォーマンスにも影響する場合があるので、本番リリースビルドの際は Release Mode(最適化有効)に戻すことが推奨されます。
- Unity バージョンによっては「Code Optimization (Debug/Release)」のメニュー構成が多少変わっていることがあります。新しい Unity だと、メニュー内の Edit > Preferences > General タブにある「Code Optimization On Startup」を
Debug
にするかRelease
にするかで切り替えます。
要するに「現在 Release Mode だからデバッガをアタッチできないよ。Debug Mode に切り替えますか?」という確認ダイアログです。デバッグが必要なら “Enable debugging…” を、パフォーマンス優先や今はデバッグ不要なら “Cancel” を選びましょう。
3. スクリプトにブレークポイントを設定する
3.1 Visual Studio でスクリプトを開く
- Unity のプロジェクト ウィンドウで、デバッグしたい C# スクリプトをダブルクリックします。
- Visual Studio が起動(またはフォーカス)し、該当スクリプトが表示されます。
3.2 ブレークポイントを設定
- Visual Studio で、止めたいコード行の行番号の左側余白をクリックします。
- 赤い丸印(ブレークポイント)が表示されれば設定完了です。
- 同じ箇所を再度クリックすると、ブレークポイントが解除されます。
4. Unity と Visual Studio を接続(デバッガをアタッチ)
4.1 Visual Studio 側でアタッチ
- Visual Studio のメニューから デバッグ > Unityデバッガーのアタッチ… を選択するか、ツールバーにある Unityにアタッチ ボタンをクリックします。
- 複数の Unity プロセスが動作している場合は、アタッチ先のエディターを正しく選んでください。
4.2 Unity で Play
- Unity エディターに戻り、Play ボタン (▶) を押してゲームを実行します。
- 該当箇所のコードが呼ばれると、ブレークポイントで停止し、Visual Studio 側にフォーカスが移ります。
デバッグ中は虫の色が青になります

5. デバッグ操作
5.1 ステップ実行
ブレークポイントで停止した状態で、Visual Studio のデバッグボタンから以下の操作が可能です:
- Step Over (F10): 現在行の処理を実行し、次の行へ移動
- Step Into (F11): メソッド呼び出しの中に入る
- Step Out (Shift+F11): 現在のメソッドから抜ける
5.2 変数の値を確認・変更
- Locals ウィンドウ / Watch ウィンドウ で、現在の変数の値を確認できます。
- 変数をダブルクリックすると、値の変更も可能です。
5.3 呼び出し履歴の確認
- 呼び出し履歴ウィンドウ で、どのメソッドからどのように呼び出されたかを確認できます。
- バグの原因を追跡する際、処理の流れを把握するのに役立ちます。
5.4 実行の再開・停止
- 続行 (F5): ブレークポイント解除状態で実行を再開
- デバッグの停止 (Shift+F5): デバッグを完全に終了
6. デバッグ終了後
6.1 Unity 側で停止
- Visual Studio でデバッグを終了した後、Unity エディターに戻り、再度 Play ボタン を押してゲームの実行を停止します。
6.2 コード修正や再デバッグ
- コードを修正・保存すると、Unity が自動でリコンパイルします。
- 必要に応じて、再度「Unityにアタッチ」→「Play」を繰り返してデバッグを続けます。
7. トラブルシューティング
7.1 ブレークポイントが無視される/ヒットしない
- Debug Mode に切り替えているかを確認(右下の「Mode:」表示や Preferences をチェック)。
- 該当コードが実際に呼ばれているか(Update や Start が正しく呼び出されているか、条件分岐に入っているか)を確認。
- Visual Studio と Unity が正しく接続されているか(Attach 先が正しいか)を確認します。
7.2 デバッグ中に Unity がフリーズ/重くなる
- Debug Mode は通常実行よりもオーバーヘッドがあるため、ゲームが重く感じる場合があります。
- 不要なブレークポイントを削除するか、デバッグ終了後に Release Mode に戻すと、パフォーマンスが改善されます。
7.3 「C# Debugger Attached」などのダイアログが出る場合
- Debug Mode でない状態でデバッガをアタッチしようとすると、ダイアログが表示されることがあります。
- この場合、「Enable debugging for this session」を選び、スクリプトの再コンパイルを行えばデバッグが可能になります。
まとめ
- Debug/Release の切り替え
- エディター右下の「Mode: Release/Debug」から、または Preferences > General の Code Optimization On Startup で切り替え。
- Visual Studio を外部エディタに設定
- Visual Studio でブレークポイントを設定
- 「Attach to Unity」で Unity にアタッチし、Unity で Play
- ブレークポイントで停止したら、ステップ実行や変数の値確認を行う
- デバッグ後は必要に応じて Release Mode に戻してパフォーマンスを回復
また、常に Debug Mode にしておく利点としては、いつでも即座に詳細なデバッグ情報が得られる点がありますが、通常の動作やパフォーマンステストでは Release Mode を使用することで、最適化された環境を維持できます。状況に応じてモードを使い分けることで、開発効率と実行パフォーマンスの両立が可能です。
これらの手順とポイントをマスターすれば、Unity プロジェクトの複雑な挙動やバグを効率的に見つけ、修正することができ、開発作業をよりスムーズに進めることができます。ぜひ活用して、快適なデバッグ環境を整えてください。
ディスカッション
コメント一覧
まだ、コメントがありません