現場レベルのゲーム制作が、すべてここで学べます。
この講座はUnity 初心者向けノンフィールドRPGの作り方講座の第2回です。
前回はプロジェクトの作成と画像素材のインポート、TextMeshProの準備を行いました。
前回の記事:

第2回では各シーン、中でもタイトルシーンを制作し、ゲーム進行を管理するマネージャーオブジェクトやスクリプトを作成していきます。
シーンファイルを作成する
まずはUnityでゲームの舞台を表すシーンを制作していきます。
このゲームは以下の4つのシーンで構成されます。
- タイトル[Title]
- ダンジョン[Dungeon]
- バトル[Battle]
- リザルト[Result]

まずは[Assets/Scenes]フォルダにある「SampleScene」ファイルを右クリックし、[Rename]をクリックしてファイルの名前を「Title」に変更します。
さらに[Assets/Scenes]フォルダを右クリックし、[Create]→[Scene]→[Scene]の順でクリックしてシーンファイルを追加し名前を「Dungeon」とします。

同じ方法で「Battle」と「Result」シーンファイルも作成し、全部で4つのシーンファイルを用意します。

シーンをScene Listに登録する
次に作成したシーンをScene Listに登録します。これはUnityでどのシーンをゲーム中に実際に読み込んで使えるようにするかを設定する操作です。Scene Listに登録していないシーンはゲーム中で使えません。
Unityエディターのメニュー左上にある[File]→[Build Profiles]の順でクリックしてBuild Profilesを開きます。

左の[Scene List]をクリックして、右に表示されるScene Listに先ほど作成した4つのシーンファイルをドラッグアンドドロップしてシーンを登録します。

ゲームを起動した時最初に開かれるシーンは0番のシーンです。今回はTitleシーンなのでこのシーンをドラッグして一番上に移動させておきました。
タイトルシーンを作成する
[Assets/Scenes]フォルダにある[Title]をダブルクリックしてタイトルシーンを開きます(既に開いている場合はそのままで)。Unityエディターのメニューから[Window]→[Rendering]→[Lighting]の順でクリックして、Lightingを開きます。

上画像のように[Environment]をクリックしてEnvironmentを表示します。
Environmentの一番上にある[Skybox Material]の右にあるオブジェクトピッカーをクリックして、[None]を選択します。

これで背景の空模様を消すことができました。
カメラの設定
背景を黒くするために次はカメラの設定を変更します。
Hierarchyビューにある[Main Camera]をクリックしてInspectorビューを表示します。

Cameraコンポーネントの[Clear Flags]を「Solid Color」に変更し、Backgroundの色を黒に変更します。
Clear Flagsは、Unityのカメラ(Camera)がシーンを描画する際に、フレームの最初にどのように背景をクリア(初期化)するかを指定する設定です。Solid Colorにするとカメラの視界の背景を単色で塗りつぶすようになります。
BackGroundはその塗りつぶす色を指定しています。
Gameビューを開いて背景が黒色になっていることを確認します。
(実は先ほどSkybox設定をNoneにしたので背景色を黒色にするだけでも画面は真っ黒になりますが、Skyboxを使わないなら軽量なSolid Color設定を使います)
UIの作成
ここではとりあえず「TOUCH START」の文字と、画面をタッチしたときのボタンを作成します。
Hierarchyビューを右クリックし、[UI]→[Text – TextMeshPro]をクリックします。


Text(TMP)には実際のテキスト情報を設定します。
EventSystemはCanvasの機能などを動かすためのオブジェクトなので誤って消さないようにしましょう。
それでは、Canvasオブジェクトを選択してInspectorビューを開きます。

Canvas Scalerコンポーネントの[UI Scale Mode]を[Scale With Screen Size]に変更します。
[Reference Resolution]のXを1080にYを1920に変更します。 [Screen Match Mode]を[Expand]に変更します。UI文字を表示する
Text(TMP)オブジェクトを選択してInspectorビューを開きます。
次に、Rect Transformで四角形で描かれているAnchor Presetの設定をStretch-Bottomに変更しておきます。これはどの位置を基準にしてオブジェクトの座標や幅を設定するかを決めるものです。

↑Shiftキーを押しながらStretch-Bottomを選択。

RectTransformコンポーネントの設定を上の画像のとおり変更します。

TextMeshProコンポーネントの
[Tex Input]に「TOUCH START」と入力します。 [Font Asset]のオブジェクトピッカーをクリックして前回の講座で作成した「Mplus1-Regular SDK」というFont Assetを選択します。 [Font Size]を80に変更します。 [Vertex Color]を黄色に変更します。インスペクターを少しスクロールしたところに出てくる[Alignment]を真ん中、中央寄せに変更します。

Gameビューを開いて上の画像と同じように文字が表示されているか確認します。
タッチ用のボタンを作成する
ここからはタイトル画面をタッチした際にゲームスタートできるボタンを作っていきます。
まずはHierarchyビューにあるCanvasオブジェクトを右クリックし、[UI]→[Panel]をクリックします。

Panelオブジェクトは必ずText(TMP)オブジェクトの下に置いてください。
今回はこのPanelオブジェクトをタッチ用ボタンにしていくので先ほどのTMPオブジェクトの背面に配置されると文字列が表示部分をタッチしても動かなくなる恐れが出てきます。
次にPanelオブジェクトを選択してInspectorビューを開きます。

ImageコンポーネントのColorをクリックします。

A値(アルファ値)を0にして透明にします。


Inspectorビューの下にある[Add Component]をクリックして、検索バーに「Button」と入力します。
一覧に[Button]が表示されるのでクリックして、[Button]コンポーネントを追加します。
実際にタッチして動作させるためにはButtonコンポーネントのOnClickイベントに処理を登録する必要がありますが、後の回で行います。
一旦ここまででUI部分の作成を終えます。
ゲームマネージャー系オブジェクトとC#スクリプトを準備する
このゲームの管理を行うC#スクリプトをアタッチするための空のオブジェクトをまずは3つ作成します。
Hierarchyビューを右クリックして、[Create Empty]をクリックして空のオブジェクトを作成しましょう。オブジェクトの名前は
- GameManager
- SoundManager
- Director
とします。

Unityゲーム開発におけるゲームマネージャーの役割
これら3つのオブジェクトの役割は
- GameManager:Unityでよくゲームマネージャーと呼ばれるオブジェクト。全てのシーンで存在し、ゲームの進行状態を管理するための役割を担います。
- SoundManager:サウンドマネージャーと呼ばれるオブジェクト。全てのシーンで存在し、BGMや効果音などの音響管理の役割を担います。
- Director:現在のシーンだけで存在し、そのシーンの主要機能を管理するオブジェクト。今回の場合はタイトル画面管理の役割を担います。
このようになっています。
Unityを用いたゲーム開発では様々なシーンを行き来してゲームを進行・管理していきます。
そのため、各シーン間で様々なデータを共有したり使いまわしたりできると便利です。そうした役割を担うのがゲームマネージャーです。
サウンドマネージャーは音響に特化したものになっています。BGMや効果音の再生状態も引き継げると便利です。例えば、BGMや効果音を鳴らし続けたままシーン遷移させることが可能です。
ディレクターは全てのシーンには存在せず、そのシーンが終わるとオブジェクトが破棄されるものを管理します。つまり、各シーン間でデータ共有や使いまわしが不要な処理を持ちます。
ディレクターオブジェクトはあまり慣用的な名称ではないですが、ゲームマネージャーはUnity開発でよく出てきます。慣例的によく使われる名前なんだなと覚えておきましょう。
全てのシーンでオブジェクトを存在させる代表的手法としてstatic(静的)定義、シングルトンなどがよく使われます。この講座でも後ほどこれらの実装方法を扱います。
はじめてのUnity開発だとこのあたりはややこしいかもしれません。少しずつ慣れていけばOKです。
今は「よくわからない謎の言葉が出てきたな・・・」くらいの認識でも大丈夫です。
GameManagerオブジェクトを設定する
次に[Assets/Scripts]フォルダを選択して右クリックし、[Create]→[Scripting]→[MonoBehaviour Script]をクリックします。
フォルダ内にスクリプトファイルが作成されるので名前を「GameManager」とします。

同じように「SoundManager」と「TitleDirector」というスクリプトファイルも作成します。
次にHierarchyビューにあるGameManagerオブジェクトを選択してInspectorビューを表示します。

一番下にある[Add Component]をクリックし、検索バーにGameManagerと入力します。表示される一覧の中に「Game Manager」が表示されるのでクリックしてアタッチします(スクリプトファイルを直接オブジェクトにドラッグアンドドロップしてアタッチすることもできます)。


同じようにしてSoundManagerオブジェクトにSoundManagerスクリプトを、DirectorオブジェクトにTitleDirectorスクリプトをアタッチします。
SoundManagerオブジェクトを設定する
次はサウンドマネージャーを設定します。
まとめ
今回はゲームに使うシーンファイルの設定を行い、その中でタイトルシーンの制作を行いました。UI画面の構築を行い、今後使うゲームオブジェクトやスクリプトファイルを作成しました。
次回からC#でスクリプトを作っていきます。シーン間を遷移するコードとオーディオを再生するコードを作成していきます。
次の記事:

現場レベルのゲーム制作が、すべてここで学べます。






コメント