【初心者Unity】シーンの切り替え
1.はじめに
前回の記事では、シーンの作成方法や編集中のシーンの確認方法等、シーンの基本的な内容について解説しました。
本記事では実際のゲーム製作において多用する技術であろう、シーンの切り替え方法について解説していきたいと思います。
シーンの切り替えはスクリプトから行います。
2.シーンの切り替え
今回は例として、タイトル画面でスペースキーを入力するとゲーム画面に切り替わるような機能を実装してみます。
先に完成イメージを見てみましょう。
・・・少しわかりずらいですが、ゲームビューやヒエラルキービューの表示からシーンが切り替わっていることがわかるかと思います(スペースキーを押すことで切り替えています)。
それでは、早速実装していきましょう。
まずは、切り替える対象となるシーンを作成します。
「TitleScene」という名前のシーンを新規作成してください。
作成できたら、「TitleScene」のヒエラルキービューで「Main Camera」を選択し、インスペクタービューで、「Camera」→「ClearFlags」で「Solid Color」を選択してください。
ゲームビューを確認すると、ゲーム画面の背景が一色になっていることが確認できるかと思います。
色を変更したい場合は、「ClearFlags」下の「Background」をクリックしてください。
カラーパレットが表示されますので、ここで設定したい色を選択します。
目に優しい緑色にしましょう。
これだけでは味気が無いので、何かしらの文言を追加しましょう。
ヒエラルキービューで「UI」→「Text」を選択すると、Textオブジェクトが作成されます。
シーンビューでは何が何だかわからないので、ゲームビューに切り替えてください。
画面左下に文字が表示されていることが確認できます。
ボタンの文言を変えましょう。
インスペクタービューのTextに設定したい文言を入力します。
今回は「スペースキーを入力してください」としておきます。
ゲームビューに表示される文字が見切れていてもあまり気にしないでください。
また、(場所はどこでも良いのですが、)文字を画面中央に配置しましょう。
インスペクタービューの座標(とサイズを)を以下のように設定します。
これにて、タイトル画面の作成は完了です。
<関連記事>
【Unity連載】uGUI(Text)の使い方を詳しく解説
「TitleScene」から切り替える先となるシーンはデフォルトの「SampleScene」ということにして、続いてスクリプトの設定を行います。
「TitleScene」のヒエラルキービューで「Main Camera」を選択し、以下のスクリプトを設定してください。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; // UnityEngine.SceneManagemntの機能を使用 public class ToSampleScene : MonoBehaviour { // 中に記述された処理が一定間隔で繰り返し実行される void Update() { // もし入力したキーがSpaceキーならば、中の処理を実行する if (Input.GetKeyDown(KeyCode.Space)) { // SampleSceneに切り替える SceneManager.LoadScene("SampleScene"); } } }
シーンの切り替えは、UnityEngine.SceneManagement.SceneManagerのLoadScene()という機能で行います。
LoadScene()の引数には、移動先となるシーンの名前を指定してあげます。
3.ビルドの設定
以上で実装完了、ということで実際にゲームを起動し、スペースキーを押してみると以下のように怒られてしまいます。
Scene ‘SampleScene’ couldn’t be loaded because it has not been added to the build settings or the AssetBundle has not been loaded.
「because it has not been added to the build settings」とあるように、作成したシーンはビルドに含めてあげなければ認識されません。
エディタ上部「File」→「Build Settings」で設定画面を開き、「Scenes In Build」に作成したシーンのファイルをドラッグアンドドロップします。
ゲームを実行してみてください。
スペースキーの押下によってシーンが切り替わることが確認できましたでしょうか。