先週ハッカソンに参加し、即興でUnityで作ることになりネットで調べながら作りました。調べたい情報がまとまっているところがあまりなく、苦労したので備忘録としてまとめていきます。
今回は、Unityでよく利用するシーン(Secen)についてです。シーン(Scene)は、Unityで開発する際の土台となる部分です。
タイトル画面からゲーム画面に移ったりい、スコア画面からもう一度ゲームするときなど画面を切り替える時には、シーンを切り絵たりすることが多いです。
シーン(Scene)の使い方として、オブジェクトの追加やシーンの遷移を説明します。
Contents
シーン(Scene)とは?
シーン(Scene)は、ゲームなどをする際の画面そのもののことをいい、ゲームの土台です。
ゲームのキャラクターやスコアなどを表示するテキスト(Text)などを配置する土台がシーン(Scene)です。これがないと開発が始まりません。
シーン(Scene)はどこに保存されている?
Unityのプロジェクトを作成すると、最初に「SampleScene」という名前のシーンが作成され、Main CameraとDirectional Lightがデフォルトで入っています。
シーンの保存先は、ProjectビューのAssetsの中にあるScenesフォルダに入っています。バージョンによっては、フォルダの名前や場所が変わっている可能性があります。
シーン(Scene)にオブジェクト(Object)を追加する
カメラと光だけでは、何もないので物体を追加してみます。
シーン(Scene)に関する操作は、Hierarchyビューでできます。Createボタンを押すと追加できるオブジェクトがリストで出てくるので、3D Object → Cubeで箱を追加します。
すると、シーン(Scene)の中央に箱が出現します。
新しいシーン(Scene)を作る
別のシーンを作ります。名前は、「SphereScene」とします。
ProjectビューのScenesの枠の中で右クリックをして、「Create」→「Scene」でNew Sceneが作成されます。作成時に名前変更できますが、もし別のところを間違えてクリックしてしまった場合、名前を変更したいSceneに右クリックすると「Rename」があるのでクリックして名前を変更しましょう。
新しいシーンを編集する
新しく追加したSphereSceneを編集します。
まずは、Cubeを追加した今のSampleSceneを保存します。MacならCommand + SでWindowsならCtrl + Sです。その後、SphereSceneをダブルクリックするとSceneが開かれます。
Cubeがないデフォルトの状態のSphereSceneが開くとHierarchyの部分がSphereSceneになっていることがわかります。
球を追加する
このシーン(Scene)に球(Sphere)を追加します。Cubeと同様でHierarchyのCreate→3D Object → Sphereを選ぶと球が登場します。
Build Settingでシーンを追加する
Unityでプロジェクトを実行するときは、ビルド(Build)すると言います。
その設定で今回作成した「SphereScene」を追加しましょう。
Unityのメニューの「File」→「Build Settings」をクリックします。
「Build Settings」という画面が出てくるので、ProjectビューのScenesフォルダからSphereSceneを「Scenes In Build」という枠の中にドラック&ドロップします。
「Scenes In Build」にScenes/SphereSceneが追加されているのを確認したら、Build Setting画面を閉じて大丈夫です。
シーンの切り替えをする
シーン(Scene)でよく利用される動作として別のシーンに切り替えることが挙げられます。ゲーム開始のタイトルシーンからゲームシーンに移動するときなどが一般的です。
本来は、ゲームスタートなどのボタンをクリックしてシーン切り替えをしますが、ボタンなど説明は別の機会にするため、今回はスペースキーを押して切り替えるようにします。
プログラムを作成する
プログラムは、C#で書きます。ProjectのフォルダでAssetsの中にScenesというフォルダと同じ階層に「Programs」というフォルダを作成します。
次に「Programs」の中で右クリックして「Create」→「C# Script」を選択して「ScenesManagement」というプログラムを作成します。
プログラムを開く
作成すると、デフォルトで少しプログラムが書かれています。
ScenesManagementをダブルクリックするとプログラムを編集するエディターが開きます。対応しているエディターが異なる場合がありますが、キャプチャではVisual Stuidoで開かれています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ScenesManagement : MonoBehaviour { // シーンが始まった時に一度だけ実行 void Start () { } // 毎フレームで実行されている void Update () { } } |
シーン切り替えのプログラム
切り替えるためには、常に実行中でキーが押されたことを監視していなければいけません。
そこで、Update()関数でスペースキーが入力されたかを監視して、押された時に切り替えます。
また、シーンを切り替える時にはシーンを取り扱うための UnityEngine.SceneManagemntが必要となるため最初にusingで宣言します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; // シーン切り替えするたけに追加 public class ScenesManagement : MonoBehaviour { // シーンが始まった時に一度だけ実行 void Start () { } // 毎フレームで実行されている void Update () { if (Input.GetKey(KeyCode.Space)) // スペースキーが押されたら { SceneManager.LoadScene("SphereScene"); // SphereSceneにロードする } } } |
シーンにプログラムを追加する
Unityでは、プログラムを書いただけでは実行されません。シーンの中のオブジェクトにプログラムをアタッチして実行されます。
- まずは、SampleSceneに戻りましょう。ScencsのSampleSceneをダブルクリックします。
- hierarchyに新しくCreateで「Create Empty」という空のオブジェクトを追加して、その中にプログラムを追加します。
- 空のオブジェクトは、「GameObject」という名前で作成されているので、一度クリックするとInspectorビューで「Add Component」というボタン表示されます。
- 「Add Component」をクリックすると追加するコンポーネントをSearchする画面が出るので、「scene」と打つと先ほど作成した「ScenesManagement」が表示されるのでクリックして追加します。
- 最後にUnityの画面の中央上にある実行ボタン(再生ボタン)をクリックすると実行されます。
- スペースキーを押してシーンが切り替わるのを確認できたらOKです。
- ※赤いエラーで「Scene ‘SphereScene’ couldN7t be loaded ~~」と出ている場合は、シーンを追加する章のBuild Setting部分が抜けているので確認してください。
まとめ
シーン(Scene)の使い方の入門編でした。
- シーンの説明
- 新しいシーンの追加方法
- シーンの切り替えプログラムの作成と追加方法
これらは、最初にゲームを作る上で基礎となる知識です。慣れたら最初からフレームワークとしてTitleSceneやGameSceneなどを作ってからゲーム内容を考え始めていくかもしれません。
しかし、ScenesManagementなのに、SphereSceneからSampleSceneに移動できません。この続きは別で紹介していきたいと思います。