【Unity】シーンの切り替え方法。タイトルやゴール画面の遷移に使えます。
どうも、だらはです。
今回はシーンの切り替え方法について紹介したいと思います。
スクリプトでは以下のメソッドを使います。
- Application.LoadLevel()メソッド
シーンの切り替え方法
シーンの切り替え手順は以下の通りです。
◆シーンの切り替え手順
- 切り替える2つのシーンを準備する。
- Build Settingsに2つのシーンを追加する。
- シーン切り替え用のスクリプトを作成する。
以上です。
では、順番に見ていきます。
①切り替える2つのシーンを準備する。
「File -> New Scene」から切り替える2つのシーンを作成します。
今回は、以下のシーンを作成します。
- 切り替え前のシーン名:「Title」
- 切り替え後のシーン名:「SampleScene」
②Build Settingsに2つのシーンを追加する。
「File -> Build Settings -> Scenes in Build」に2つのシーンを追加します。
Projectウィンドウから、ドラッグ&ドロップで追加します。
③シーン切り替え用のスクリプトを作成する。
最後に、シーン切り替え用のスクリプトを作成します。
空のGameObjectに以下のスクリプトをアタッチしてみてください。
◆Startbutton.cs
using UnityEngine;
public class Startbutton : MonoBehaviour
{
[SerializeField]
private string SampleScene;
private string text = "ボタンを押してね。Scpaceキーでも良いです";
private void OnGUI()
{
Rect rect = new Rect(10, 10, 400, 30);
GUI.Label(rect, text);
rect.y = 40;
rect.height = 50;
if (GUI.Button(rect, "Push Start")
||(Input.GetKey(KeyCode.Space)))
{
Application.LoadLevel(SampleScene);
}
}
}
ゲームを実行すると、以下のゲームビューになります。
左上にボタンが表示されるため、それを押下するとゲームシーンが切り替わります。
スクリプトについて解説
シーン切り替えにはApplicationクラスを用います。
メソッドはLoadLevel()メソッドを使います。
public static void LoadLevel(int index);
public static void LoadLevel(string name);
indexは「File -> Build Settings -> Scenes in Build」に追加したシーン順を0ベースの数字で指定できます。
stringはシーン名の文字列で指定できます。
また、以下のメソッドを使うと、上記indexとシーン名を取得できます。
public static int loadedLevel{ get; }
public static string loadedLevelName{ get; }
以上、だらはでした。
追記(2021.8.12)
Unity5.3からApplication.LoadLevelが非推奨になったとのことです。
代わりに、SceneManager.LoadScene()メソッドを使うと良いとのことです。
◆修正後StartButton.cs
using UnityEngine;
using UnityEngine.SceneManagement;
public class StartButton : MonoBehaviour
{
[SerializeField]
private string SampleScene;
private string text = "ボタンを押してね。Scpaceキーでも良いです";
private void OnGUI()
{
Rect rect1 = new Rect(10, 10, 400, 30);
GUI.Label(rect1, text);
rect1.y = 40;
rect1.height = 50;
if (GUI.Button(rect1, "Push Start")
|| (Input.GetKey(KeyCode.Space)))
{
//Application.LoadLevel(SampleScene);
SceneManager.LoadScene(SampleScene);
}
}
}
ディスカッション
コメント一覧
まだ、コメントがありません