Unity を検索

Visual Studio 2019 を使って Unity のプログラミングワークフローを高速化する 10 の方法

2020年7月14日 カテゴリ: Engine & platform | 11 分 で読めます
取り上げているトピック
シェア

Is this article helpful for you?

Thank you for your feedback!

Visual Studio 2019 には、ワールドクラスのデバッグ機能に加え、新しいツールやカスタマイズオプションが多数用意されており、皆さんの思い通りのコーディング環境を構築できるようになっています。また、Unity で C# を使用して作業するための強力な機能の範囲が付属しており、以前よりも迅速にコードを書いたりリファクタリングしたりするのに役立ちます。今回のブログ記事では、ワークフローのスピードアップに役立つ機能について 10 のヒントをご紹介します。

Unity のエバンジェリストである Arturo Nereu と Microsoft の Visual Studio Tools for Unity のプログラムマネージャーである Abdullah Hamed 氏は先日、Unity で開発する際に Visual Studio 2019 を最大限に活用するためのヒントを紹介する Unite Now セッションを開催しました。

このコンテンツはサードパーティのプロバイダーによってホストされており、Targeting Cookiesを使用することに同意しない限り動画の視聴が許可されません。これらのプロバイダーの動画の視聴を希望する場合は、Targeting Cookiesのクッキーの設定をオンにしてください。

この記事では、セッションで紹介されたヒントのいくつかを簡単に紹介します。さらに深く掘り下げたい方のために、セッションの中でヒントに触れている箇所や他の関連コンテンツへの直接リンクも追加しました。

ヒント 1:Unity にデバッガーをアタッチして再生する

Console.Log の使用は、Unity のコンソールビューを利用してプロジェクトをデバッグするための簡単で迅速な方法です。しかし、Visual Studio はより効率的な方法を提供しており、この方法はプロジェクトが複雑になればなるほど価値を増していきます。Visual Studio では、Visual Studio メニューのAttach to Unity」ボタンをクリックするだけです。これにより、2 つのアプリケーション間の接続が作成されるので、Unity の再生モードでプレイしながら、ブレークポイントを挿入したり、コードをステップスルーしたりすることができます。また、「Attach to Unity and play」をクリックして再生すると、IDE から離れることなく実行を開始することができます。ここでの優れた点は、実行時にコードフローの状態やプロパティの値などを検査できることです。これは些細なことに思えるかもしれませんが、ゲームプレイ中にいつでも実行を一時停止して、ある特定のフレーム内でのゲームの特定の状態とプロパティの値を検査するためにステップスルーすることができる機能は、デバッグにおける非常に強力なツールとなります。

ブレークポイントを扱う際のもう 1 つの便利なオプションは、デバッグフローで適用する前に真として評価しなければならない条件式のような、関連するアクションに紐付いた独自の条件を挿入することができるということです。

ヒント 2:パフォーマンスの見通しとベストプラクティスのための提案を得る

Visual Studio 2019 では、Unity 向けの解析ツールが導入されています。解析ツールはコードパターンを検出し、より推奨されるパターンへの置き換えを提案することができます。Unity 解析ツールは、Unity 固有のコード診断とコード修正を集めたもので、GitHub でオープンソースとして公開されています。解析ツールは、Unity 固有の診断をよりよく理解できるようにしたり、Unity プロジェクトには適用されない一般的な C#診断を省略してプロジェクトを支援したりするために利用できます。例としては、下に示したような、ゲームオブジェクトに特定の動作を適用するために、ゲームオブジェクトが特定のタグを持っているかをチェックする単純な条件文のようなものが挙げられます。

if(collision.gameObject.tag == "enemy")
{
// 敵のゲームオブジェクトに適用されるロジック
}

解析ツールは皆さんの書いているコードを分析することができ、パターンを検出し、代わりにより最適化されたメソッドを使用することを提案します。上の例の場合、解析ツールは、より効率のいい CompareTag メソッドを提案します。

if(collision.gameObject.CompareTag("enemy"))
{
	// 敵のゲームオブジェクトに適用されるロジック
}

上記の例では、1 つのゲームオブジェクトにアタッチされた 1 つのスクリプトに対する軽微な最適化のための調整を行っておりさほど大きな影響はありませんが、スクリプトがアタッチされた GameObject が 1000 個もあるような大規模なプロジェクトでは事情が違ってきます。パフォーマンスの最適化を検討する際には、すべての部分の合計が重要であり、解析ツールはコード構文を最適化することで不要なオーバーヘッドを減らすことで、パフォーマンスを特定して改善することを簡単にしてくれます。

また、解析ツールのリストをご覧になることもできます。さらに詳しく知りたい方は、このブログ記事をお読みになるか、Unite Now のセッションでこのヒントに関して説明しているので、そちらをご覧ください。

ヒント 3:タスクリストをフォローアップチェックリストとして活用する

スクリプトを作成する際によくある課題は、後で戻ってきてコードを再検討する必要があることです。これは、たとえばゲームメカニクスのテスト中に、最終的にはパフォーマンスを向上させるためにリファクタリングが必要になるかもしれないが、とにかく現在のニーズを満たすコードスニペットを実装したからという場合もあります。Visual Studio にはタスクリストという便利な機能があり、TODO や HACK などのトークンを使ったコードコメントやカスタムトークンを追跡することができます。また、コード内のあらかじめ定義された場所に直接移動するショートカットを管理することもできます。コードにトークンを追加するだけで、後で見直すためにタスクを作成することができます。

// TODO: 新しいコライダーが使えるようになったら衝突検出を変える

メニューの「View」からアクセスできる「Task List」ウィンドウでは、タグ付けしたすべてのタスクの概要が表示され、ワンクリックでコードの特定の部分にジャンプできるようリンクが張られています。

コード内の // TODO: に続けてコメントを追加することで、右上に表示されている Task List ウィンドウを使って、後でフォローアップしたいアクションアイテムを簡単に「タグ付け」できる。

プロジェクトのアクションアイテムのリストが長くなってきたら、タスクリストに独自のカスタムトークンを設定して、リファクタリングプロセスの優先順位を割り当てて効果的に整理することもできます。タスクリストのトークンをカスタマイズするには、Tools > Options を選択します。

詳細な例をこちらの Unite Now セッションでご紹介しています。

ヒント 4:スニペットを使ってワークフローを高速化する

コードスニペットは再利用可能なコードの小さなブロックで、右クリックメニュー(コンテキストメニュー)のコマンドやホットキーの組み合わせを使用してコードファイルに挿入することができます。一般的には try-finally や if-else ブロックなどの一般的に使用されるコードブロックが含まれていますが、完全なクラスやメソッドを挿入するために使用することもできます。要するに、ボイラープレートコードを作成することで多くの時間を節約する便利な方法を提供してくれます。

コードを名前空間やリージョンなどのスニペットで囲むには、CTRL + K + S と入力します。この入力によって、下の動画のようにスニペットが適用されます。

Microsoft のドキュメント(Visual Studio 用、および Visual Studio for Mac 用)には、独自のコードスニペットを作成するためのステップバイステップのチュートリアルが掲載されています。

ヒント 5:数回のクリックですべての変数の名前を変更する

コードをリファクタリングするときの一般的なワークフローは、変数の名前をより説明的で正確な名前に変更することです。ある場所で変数名を変更すると、その変数へのすべての参照を修正しなければならなくなります。しかし、Visual Studio には、1 回の操作でこれを行う簡単なショートカットが用意されています。名前を変更したい変数の名前をハイライトして右クリック(またはキーボードショートカットの CTRL + R を使用)し、変数の名前を変更します。変更を適用する前にプレビューして、影響の確認を行うには「preview changes」を選択します。

スクリプトのクラスを変更する際にも同じヒントを使用できますが、コンパイルエラーを避けるために、C# ファイルの名前も併せて変更する必要があることを覚えておいてください。クラスの名前変更の流れについては、Unite Now セッションのこの部分で詳しく説明しています。

ヒント 6:キーボードショートカットでコードをコメントアウトする

コードブロックのコメントやコメント解除は、コードをリファクタリングしたりデバッグしたりする際によく行われるワークフローです。一度に 1 行ずつ行うと、時間のかかる作業になります。しかし、Visual Studio では、シンプルなショートカットコマンドを使用してコードブロック全体をコメントアウトすることができます。CTRL + K + C でコメントアウト、CTRL + K + U でコメント解除することができます。Mac の場合は、CMD + K + C でコメントアウト、CMD + K + U でコメント解除します。

ブロック全体を素早くコメントアウトできるので、テストワークフロー中に特定のゲームロジックの無効化が効率的に行えます。

ヒント 7:GitHub 統合を数回のクリックで設定する

Unity Collaborate では、ユーザーフレンドリーなビジュアルインターフェイスで Unity から直接プロジェクトを保存、共有、同期することが簡単にできますが、チームや開発者によっては、GitHub のようなソース管理ソリューションを使用することが好まれることもあります。Github for Unity プラグインを使えば、GitHub でのソース管理作業が格段に簡単になります。この拡張機能は完全にオープンソースで、プロジェクトの履歴を表示したり、ブランチで実験したり、変更点からコミットを作成したり、Unity から離れることなく GitHub にコードをプッシュしたりすることができます。GitHub の認証は 2FA を含めて Unity に組み込まれており、ボタンをクリックするだけで、コマンドラインで命令を発行することなく、ゲームのリポジトリを素早く初期化することができます。Unity に特化した.gitignore ファイルを自動作成できるので、手動で設定する必要はありません。また、Visual Studio 2019 では、IDE で直接 GitHub を使用して作業することがより簡単になる新しいインターフェイスも提供されています。

Visual Studio で新しいインターフェイスを有効にするには「Tools」 > 「Options」 > 「Environment」 > 「Preview features」 > 「New Git user experience」を選択します。

また、Unite Now のセッション動画の中の詳細なチュートリアルを見ながら皆さんご自身でもぜひお試しください。

ヒント 8:Live Share を使ってリアルタイムでリモートのコラボレーションを行う

Live Share を使用すると、リンクひとつで Visual Studio のインスタンスを直接チームメイトと共有することができ、チームメイトはリアルタイムでコードを編集したり、プロジェクトで共同作業を行うことができます。共有を行うためにレポジトリをクローンしたり、環境をセットアップしたりする必要はありません。どちらも Visual Studio がインストールされていれば、Live Share セッションを作成するためのボタンをクリックするだけで、簡単に共同作業を開始できます。

Visual Studio Live Share では、Visual Studio のセッションを共有し、他の人と直接リアルタイムで共同でコーディングすることができる。

共有したい相手が Visual Studio または Visual Studio Code をインストールしていれば、「Live Share」を選択するだけで共有したいコードの部分へのリンクを生成でき、共同作業を開始できます。共有セッションが作成され、皆さんと共同作業者はエディター以外のものをインストールする必要なく、皆さんのコードを見ることができるようになります。この機能はほぼ瞬時に動作します。

Live Share の詳細について知りたい方は、こちらの Unite セッションVisual Studio 製品ページをご覧ください。また、こちらのクイックスタートガイドを直接ご覧いただくのもおすすめです。

ヒント 9:Unity メッセージ用のボイラプレートコードを簡単に作成する

Unity のドキュメントを見れば確認することができますが、MonoBehaviour のすべてのメソッドのシグネチャを覚えるのは厄介です。Visual Studio には、IDE で直接調べることができる便利な機能があります。CTRL + Shift + M と入力して、実装したい関数を検索し、検索結果をフィルタリングしてメソッドを見つけます。チェックボックスを選択して [Ok] をクリックすると、メソッドのボイラプレートコードが直接コードに挿入され、すぐに使用できるようになります。

ヒント 10:キーボードショートカット

上記のヒントのいくつかは、便利なショートカットから実行可能です。つまるところ、たくさんショートカットを知っていることが最大の時間節約になるかもしれません。そこで、この記事の締めくくりとして、今回取り上げたヒントを実行するキーボードショートカットの要約と、いくつか追加のショートカットをここにリストアップします。

動作WindowsMac
プロジェクト全体の検索CTRL+TCMD + .
Unity メッセージの実装CTRL + Shift + M CMD + Shift + M
コードをコメントアウトCTRL + K / CTRL + CCMD + /
コードブロックのコメント解除CTRL + K / CTRL + U CMD + /
クリップボードの履歴からコピーCTRL + Shift + V
タスクリストの表示CTRL + Tデフォルトのキーバインドなし。バインド可能
名前空間などの雛形をスニペットとして挿入CTRL + K + S:デフォルトのキーバインドなし。バインド可能
変数の名前を変更し、すべての参照を更新CTRL + RCMD + R
コードをコンパイルCTRL + SHIFT + B CMD + Shift + B

皆さんのヒントをお寄せください

Visual Studio 2019 には豊富な機能が搭載されており、皆さんご自身のワークフローに応じて Unity での作業の生産性を高めることができる、非常に多くのカスタマイズオプションが用意されています。この記事だけでそれらをすべて網羅することが出来ないほど多数のオプションです。ここでご紹介したいくつかのヒントが、皆さんが Unity をさらに使い込むヒントとなり、また、このように便利な機能を使いこなすことの有用性を実感していただけることを願っています。また、ここで紹介しきれなかったヒントがありましたら、コメントでコミュニティと共有してください。また、Unity でのワークフローを改善するためのヒントや、今後のブログ記事で取り上げてほしいトピックがあれば、ぜひお聞かせください。

Visual Studio の改良に関するフィードバックをお求めの方へ

私たちは常にワークフローの改善に取り組んでおり、私たちのチームは最高の IDE エクスペリエンスを提供するという点で Microsoft と密接に協力しています。アイデアやフィードバックをお持ちの方はぜひご連絡ください。Microsoft の Visual Studio Tools for Unity のシニアプログラムマネージャーである John Miller (@jmillerdev) までご連絡いただくか、Unity の Scripting フォーラムでフィードバックを共有してください。

2020年7月14日 カテゴリ: Engine & platform | 11 分 で読めます

Is this article helpful for you?

Thank you for your feedback!

取り上げているトピック