##実現したいこと
ハイパーカジュアルゲームの「Level1をクリアしたらLevel2に進む」のようなゲームの進行を実装したい。
##方法
UIBottunを設置し、UIButtonをクリックしたら次のシーンを読み込むという方法で行います。
次のシーンを認識する方法には「build index」という値を使用します。「build index」は、Scenes In Buildに設定したSceneに与えられる固定値です。
*下の画像右側の「0」「1」「2」の数字が「build index」です。Scene/Level1のbuild indexは0です。
ポイントとなるコードは2種類あります。
1つ目は、Build Indexを取得するためのコードです。
int index = SceneManager.GetActiveScene().buildIndex;
GetActiveScene(今開いているScene)のbuildIndexを取得してint型の変数indexに代入しています。頭にSceneManager.と記述する理由はGetActiveSceneメソッドがSceneManagerクラスのものだからです。
2つ目は、 指定したSceneをロードするためのコードです。
SceneManager.LoadScene(index);
先ほどのSceneManager.GetActiveScene().buildIndexで取得したbuild indexの値と紐づくSceneをロードすることができます。
##手順
1.Sceneを2つ作成し、名称をLevel1、Level2とする。
2.Hierarchy>UI>Buttonからボタンを作成する。
3.新規スクリプトを1つ作成します。スクリプトの中身はこのように記述します。
using UnityEngine;
using UnityEngine.SceneManagement;
public class UIManager : MonoBehaviour
{
public int index;
public void NextStage()
{
int index = SceneManager.GetActiveScene().buildIndex;
index++;
SceneManager.LoadScene(index);
Debug.Log(index);
}
public void RetryStage()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}
}
4.空オブジェクトを作成して作成したスクリプトをアタッチします。
5.Button>Inspector>ButtonコンポーネントにあるOnClick()メソッドの+マークをおして、UIManagerで作成したNextStage()メソッドを設定します。
6.File>BuildSettings>Scenes In Buildに、使用するSceneを設定します。
これで完成です!
Level1をクリアしてNextStageボタンを押したら、Level2に進むっていう実装のやり方を整理した~https://t.co/tWRFBTQopZ pic.twitter.com/F8UkHD2IZ8
— 🌼ブブ (@sbubu12) November 10, 2020