【初心者Unity】シーンの作成
1.シーンとは
ゲームの世界で『シーン』と言ったら何を思い浮かべるでしょうか。
日常生活では「あのシーン、良かったよね」等、『場面』というような意味で使われることの多い言葉ですが、Unityにおいては別の明確な意味を持つ用語として使用されます。
例えば、横スクロールゲームにおいて、ゴールをすると次のステージに移動する演出があります。
この場合、移動前と移動後の各ステージが『シーン』です。
あるいは、タイトル画面で「ゲームを開始する」を押すとゲーム画面に遷移するという演出もあります。
この場合も、タイトル画面、ゲーム画面がそれぞれ別個の『シーン』ということになります。
すなわち、Unityにおける『シーン』という言葉は、ある一瞬の場面を表す言葉ではなく、『ステージ』であるとか『画面』などの意味を持つ言葉として使用されます。
これをより正確に表現するならば、以下のようになります。
“シーンとは、複数のゲームオブジェクトの配置と各ゲームオブジェクトにアタッチされたコンポーネントをひとまとめにしたデータ(ファイル)である。”
Unityにおけるゲーム世界は、様々なコンポーネントがアタッチされた複数のゲームオブジェクトの組み合わせで表現されます。
しかし、全ての画面で同じゲームオブジェクトを使用する訳ではありません。
ゲーム内で街を移動するときに描画すべきオブジェクトと、タイトル画面やメニュー画面で描画すべきオブジェクトは全く異なります。
この画面ごとに必要なオブジェクトをまとめたものが『シーン』です。
シーンを切り替えることで、前のシーンで使用していたゲームオブジェクトは画面上から全て破棄され、次のシーンで使用するゲームオブジェクトが新たに展開されます。
2.シーンの作成
シーンの作成方法はいたって簡単です。
プロジェクトビューで「Assets」→「Scenes」フォルダを開き、右クリック→「Create」→「Scene」を選択します。
適当な名前を付けてあげれば、シーンの作成は完了です。
あるいは、エディタの画面上部「File」→「New Scene」でも作成可能です。
この方法で作成する場合は、作成後に保存するタイミングでファイル名を付けられます。
新規作成したシーンを開いてみると、「Main Camera」と「Directional Light」が設置されています。
これらのオブジェクトはゲームの動作に必須である(と言っても過言ではない)ため、デフォルトで作成されています。
また、「SampleScene」という名前のシーンがすでに用意されていることが確認できるかと思います。
これは、Unityで新規プロジェクトを作成したときに、自動的に用意されるシーンとなります。
3.シーンの確認
Unity 5.3から追加されたマルチシーンエディティングという機能によって、複数のシーンを同時に編集することができるようにはなりましたが、基本的にはシーンはひとつずつ編集していくことになります。
現在開いているシーンはヒエラルキービュー上部に記載されています。
また、シーン名の横に * がついていることがあります。
これはシーンの編集内容が未保存であることを表しています。
エディタを閉じる前には必ずシーンの保存を行い、シーン名に * がついていないことを確認してから閉じるようにしましょう(勿論、保存していない場合は警告が出ますが・・・)。
4.スクリプトの設定
ゲームの演出によっては、特定のオブジェクトではなくシーンに対してスクリプトを設定したいと思うことがあるでしょう。
例えば、
・ 一定時間経過後に何らかのオブジェクトを生成
・ 何かしらのキーが押下されたらシーンを切り替える
等の動作は、特定のゲームオブジェクトに紐づく処理ではないため、シーンそのものにスクリプトを設定するというのが自然のように感じます。
ですが、残念なことにシーンに対してスクリプトを設定する機能は提供されていません。
上記のような処理を実装したい場合は、「Main Camera」等にスクリプトを設定するか、あるいは「Create Empty」によって空の(画面に映らない)ゲームオブジェクトを生成し、そこにアタッチする必要があります。
スクリプトによってシーンを切り替える方法は次の記事で解説したいと思います。