Unity を使用した Visual Studio for Mac でのゲーム作成の概要
重要
Visual Studio for Mac は、Microsoft の モダン ライフサイクル ポリシーに従って、2024 年 8 月 31 日に廃止される予定です。 引き続き Visual Studio for Mac を使用できますが、VS Code 用の新しい C# 開発キット拡張機能のプレビュー バージョンなど、Mac 上の開発者向けの他のいくつかのオプションがあります。
Unity は、C# でのゲーム開発を可能にするゲーム エンジンです。 このチュートリアルでは、Unity 環境で Visual Studio for Mac と Visual Studio for Mac Tools for Unity 拡張機能を使用して、Unity ゲームを開発およびデバッグする方法を示します。
Visual Studio for Mac Tools for Unity は無料の拡張機能であり、Visual Studio for Mac と共にインストールされます。 これを使用すると、Unity 開発者は、Visual Studio for Mac の優れた IntelliSense サポート、デバッグ機能、その他の生産性向上機能を利用できます。
目的
- Visual Studio for Mac を使用した Unity 開発について学習する
必須コンポーネント
- Visual Studio for Mac (https://www.visualstudio.com/vs/mac)
- Unity 5.6.1 Personal Edition またはそれ以降 (https://store.unity.com、実行には unity.com アカウントが必要)
対象ユーザー
このラボは C# を使い慣れている開発者を対象としていますが、豊富な経験は必要ありません。
タスク 1:基本的な Unity プロジェクトを作成する
Unity を起動します。 サインインを求められた場合は、サインインします。
新規をクリックします。
[Project name](プロジェクト名) を "UnityLab" と設定し、 [3D] を選択します。 [プロジェクトの作成] を選択します。
既定の Unity インターフェイスが表示されます。 左側にゲーム オブジェクトを含むシーンのヒエラルキー、中央に空白のシーンの 3D ビュー、下部にプロジェクト ファイル ペイン、右側にインスペクターとサービスがあります。 それだけではありませんが、それらはより重要なコンポーネントのうちのいくつかです。
Unity を初めて使用する開発者向けの情報として、自作のアプリ内で実行するものはすべて、シーンのコンテキストの中に存在します。 シーン ファイルは、現在のシーンとそのプロパティ用にプロジェクト内で使用されるリソースについての、あらゆる種類のメタデータを含む単一のファイルです。 自作のアプリをあるプラットフォーム用にパッケージ化すると、その結果としてのアプリは、1 つ以上のシーンのコレクションに、プラットフォーム依存コードを自分で追加したものになります。 プロジェクトにはシーンを必要な数だけ含めることができます。
新しいシーンにはカメラと指向性ライトのみが存在します。 シーンには、何かを見えるようにするためのカメラと、何かを聞こえるようにするためのオーディオ リスナーが必要です。 これらのコンポーネントを GameObject にアタッチします。
[Hierarchy](ヒエラルキー) ペインで [Main Camera] を選択します。
ウィンドウ右側の [Inspector](インスペクター) ペインを選択してプロパティを確認します。 カメラのプロパティには、トランスフォーム情報、背景、プロジェクションの種類、視野角などがあります。 オーディオ リスナー コンポーネントも既定で追加されています。これは基本的に、カメラにアタッチした仮想マイクからシーンのオーディオをレンダリングするコンポーネントです。
Directional Light オブジェクトを選択します。 これにより、シーンにライトが提供され、シェーダーなどのコンポーネントでオブジェクトのレンダリング方法を認識できるようになります。
インスペクターを使用して、一般的なライトのプロパティ (タイプ、色、強度、シャドウ タイプなど) が含まれていることを確認します。
重要なこととして、Unity のプロジェクトは Visual Studio for Mac 版とは少し異なることに注意してください。 下部の [Project](プロジェクト) タブで、Assets フォルダーを右クリックし、 [Reveal in Finder](Finder に表示) を選択します。
ご覧のように、プロジェクトには Assets、Library、ProjectSettings、Temp というフォルダーがあります。 ただし、インターフェイスに表示されているのは Assets フォルダーのみです。 Library フォルダーは、インポートしたアセットのローカル キャッシュで、アセットに関するすべてのメタデータが保持されます。 ProjectSettings フォルダーには、自分で構成できる設定が格納されます。 Temp フォルダーは、ビルド プロセス中に、Mono と Unity からの一時ファイル用に使用されます。 Visual Studio for Mac で開くことができるソリューション ファイルもあります (ここでは、UnityLab.sln)。
Finder ウィンドウを閉じ、Unity に戻ります。
Assets フォルダーには、アート、コード、オーディオなどのすべてのアセットが格納されています。今は空ですが、プロジェクトにファイルを追加するたびに、ここに表示されます。 これは常に Unity エディターの最上位フォルダーです。 ただし、ファイルの追加と削除は常に Unity のインターフェイス (または Visual Studio for Mac) 経由で行い、決してファイル システムから直接行わないでください。
GameObject は、Unity での開発の中心になります。というのは、モデル、ライト、パーティクル システムなど、ほぼすべてがそのタイプから派生されるからです。 [GameObject](ゲームオブジェクト) > [3D Object](3D オブジェクト) > [Cube] メニューを使って、新しい Cube オブジェクトをシーンに追加します。
新しい GameObject のプロパティを見て、名前、タグ、レイヤー、トランスフォームが表示されていることを確認します。 これらのプロパティは、すべての GameObject に共通です。 さらに、メッシュ フィルター、ボックス コライダー、レンダラーなどの必要な機能を提供するために、Cube に複数のコンポーネントが追加されています。
Cube オブジェクトの名前を変更します。既定の "Cube" という名前を "Enemy" に変更します。 変更を保存するために、必ず Enter キーを押してください。 これは、作成する簡単なゲームの敵キューブになります。
上記と同じ処理を使用してシーンに Cube オブジェクトをもう 1 つ追加し、 "Player" という名前にします。
さらに、プレイヤー オブジェクト "Player" にタグ付けします (名前フィールドのすぐ下にある [Tag](タグ) ドロップダウン コントロールを表示します)。 これを敵のスクリプト内で使用して、プレイヤー ゲーム オブジェクトを見つけやすくします。
シーン ビューで、マウスを使用してプレイヤー オブジェクトを敵オブジェクトから離すように Z 軸方向に移動します。 キューブの赤いパネルを選択し、青い線の方向にドラッグすることで、Z 軸方向に移動できます。 キューブは 3 次元空間に存在しますが、1 回 1 回のドラッグは 2 次元でしか行えないため、どの軸方向にドラッグするかは特に重要です。
キューブを下方向に、それから Z 軸に沿って右に移動します。 これにより、インスペクター上の Transform.Position プロパティが更新されます。 ラボでの以降の手順が簡単になるように、ここに示されている位置と同じような位置にドラッグしてください。
これで、プレイヤーを追跡するように敵のロジックを駆動するコードを追加することができます。 [Project](プロジェクト) ウィンドウの [Assets] フォルダーを右クリックし、[Create](作成) > [C# Script](C# スクリプト) を選びます。
その新しい C# スクリプトに "EnemyAI" という名前を付けます。
ゲーム オブジェクトにスクリプトをアタッチするには、新しく作成したスクリプトを [Hierarchy](ヒエラルキー) ペインの Enemy オブジェクトにドラッグします。 これで、そのオブジェクトにこのスクリプトの動作が使用されます。
[File](ファイル) > [Save Scenes](シーンの保存) を選んで現在のシーンを保存します。 それに "MyScene" という名前を付けます。
タスク 2:Visual Studio for Mac Tools for Unity を使用する
C# コードを編集する最良の方法は、Visual Studio for Mac を使用することです。 既定のハンドラーとして Visual Studio for Mac を使用するように Unity を構成できます。 [Unity] > [Preferences](環境設定) を選びます。
[External Tools](外部ツール) タブを選択します。 [External Script Editor](外部スクリプト エディター) ボックスの一覧で [Browse](参照) を選択し、 [Applications/Visual Studio.app] を選択します。 または、既に [Visual Studio] オプションがある場合は、それを選択します。
これでスクリプト編集に Visual Studio for Mac を使用するように Unity を構成できました。 [Unity Preferences](Unity の環境設定) ダイアログを閉じます。
EnemyAI.cs をダブルクリックして Visual Studio for Mac で開きます。
Visual Studio ソリューションは、わかりやすいものです。 Assets フォルダー (Finder にあるものと同じ) と、先ほど作成した EnemyAI.cs スクリプトが含まれています。 より高度なプロジェクトでは、ヒエラルキーは Unity に表示されているものとは違って見える可能性があります。
EnemyAI.cs がエディターで開かれます。 スクリプトには最初、Start メソッドと Update メソッドのスタブだけが含まれています。
最初の敵コードを次のコードで置き換えます。
public class EnemyAI : MonoBehaviour { public float Speed = 50; private Transform _playerTransform; private Transform _myTransform; void Start() { var player = GameObject.FindGameObjectWithTag("Player"); if (!player) { Debug.LogError( "Could not find the main player. Ensure it has the player tag set."); } else { _playerTransform = player.transform; } _myTransform = this.transform; } void Update() { var moveAmount = Speed * Time.deltaTime; _myTransform.position = Vector3.MoveTowards(_myTransform.position, _playerTransform.position, moveAmount); if (_myTransform.position == _playerTransform.position) { _myTransform.position = Vector3.back * 10; } } }
ここで定義されている簡単な敵の動作を大まかに確認します。 Start メソッドでは、プレイヤー オブジェクトへの (タグによる) 参照と、そのトランスフォームを取得します。 フレームごとに呼び出される Update メソッドでは、敵がプレイヤー オブジェクトに向かって移動します。 Visual Studio for Mac では、コードベースを理解しやすいようにキーワードと名前が色分けして示されます。
Visual Studio for Mac で敵のスクリプトへの変更を保存します。
タスク 3:Unity プロジェクトをデバッグする
Start メソッドの最初のコード行にブレークポイントを設定します。 目的の行のエディターの余白をクリックするか、その行にカーソルを置いて F9 キーを押すこともできます。
[デバッグの開始] ボタンをクリックするか、F5 キーを押します。 これによりプロジェクトがビルドされ、Unity にアタッチされて、デバッグできるようになります。
Unity に戻り、実行ボタンをクリックしてゲームを開始します。
ブレークポイントがヒットし、Visual Studio for Mac のデバッグ ツールを使用することができます。
[ローカル] ウィンドウで this ポインターを見つけます。これは EnemyAI オブジェクトを参照しています。 参照を展開し、Speed のような関連付けられたメンバーを閲覧できることを確認します。
ブレークポイントを、追加したときと同じ方法で、エディターの余白でクリックするか、行を選択して F9 キーを押して、Start メソッドから削除します。
F10 キーを押して最初のコード行をステップ実行します。この行では、タグをパラメーターとして使用し、Player ゲーム オブジェクトを検索します。
コード エディター ウィンドウ内でマウス カーソルを player 変数の上に置き、関連付けられているメンバーを表示します。 オーバーレイを展開して子プロパティを表示することもできます。
F5 キーを押すか、実行ボタンを押して、実行を続行します。 Unity に戻り、敵キューブが繰り返しプレイヤー キューブに近づく様子を確認します。 見えない場合は、カメラを調整する必要がある可能性があります。
Visual Studio for Mac にまた切り替えて、Update メソッドの最初の行にブレークポイントを設定します。 すぐにヒットするはずです。
速度が速すぎるため、アプリを再起動することなく、変更の影響をテストしたいとします。 [自動] または [ローカル] ウィンドウで Speed 変数を見つけ、それを "10" に変更して Enter キーを押します。
ブレークポイントを削除し、F5 キーを押して実行を再開します。
Unity に戻り、実行中のアプリケーションを確認します。 今度は敵キューブが元の速度の 5 倍の速さで移動しています。
もう一度 再生ボタンをクリックして Unity アプリを停止します。
Visual Studio for Mac に戻ります。 停止ボタンをクリックしてデバッグ セッションを停止します。
タスク 4: Visual Studio for Mac で Unity の機能を調べる
Visual Studio for Mac では、コード エディター内から Unity のドキュメントに簡単にアクセスできます。 Update メソッド内の Vector3 シンボル上のどこかにカーソルを置いて、⌘ command + ' キーを押します。
Vector3 に関するドキュメントが新しいブラウザー ウィンドウで開きます。 確認できたら、ブラウザー ウィンドウを閉じます。
Visual Studio for Mac には、Unity の動作クラスを手早く作成するためのヘルパーも用意されています。 ソリューション エクスプローラーで [Assets] を右クリックし、[追加] > [New MonoBehaviour](新しい MonoBehaviour) を選びます。
新しく作成されたクラスによって、Start メソッドと Update メソッドのスタブが提供されます。 Update メソッドの閉じ中かっこの後に、「onmouseup」と入力を始めます。 入力するに従い、実装しようとしているメソッドが Visual Studio の IntelliSense によってすぐに特定されることに注目してください。 表示されたオートコンプリート リストから、それを選択します。 パラメーターを含め、メソッド スタブが自動的に設定されます。
OnMouseUp メソッド内で「base.」と入力すると、呼び出しに使用できる基本メソッドがすべて表示されます。 IntelliSense ポップアップの右上隅にあるページング オプションを使用して、各関数のさまざまなオーバーロードを調べることもできます。
Visual Studio for Mac では、新しいシェーダーを簡単に定義することもできます。 ソリューション エクスプローラーで [Assets] を右クリックし、[追加] > [新しいシェーダー] を選びます。
シェーダー ファイル形式には、読みやすく理解しやすいようにフルカラーとフォントが適用されます。
Unity に戻ります。 Visual Studio for Mac は同じプロジェクト システムで動作するため、どちらの場所で加えた変更も自動的に相互に同期されることがわかります。 これで、タスクに最適なツールをいつでも簡単に使用できます。
まとめ
このラボでは、Unity と Visual Studio for Mac でゲームの作成を開始する方法を学習しました。 Unity の詳細については、https://unity3d.com/learn を参照してください。