LemonteaのUnity部屋

C#とかのお話です~

Unity スクリプト シーン遷移 SceneManager.LoadScene

こんにちは。レモンティーです。

今回は、シーン遷移について書きたいと思います。

シーン遷移というと堅苦しいですが、要は別のシーンにジャンプ(移動)することです。

シーン遷移で必要なのは次の三つです。

①遷移先をScenes In Buildに追加
スクリプトの冒頭にUsing UnityEngine.SceneManegiment;を書く
③遷移したいタイミングでSceneManeger.LoadScene()

さっそく見ていきましょう。



①遷移先をScenes In Buildに追加


まず、遷移先のシーンを開きます。

次に、File>BuildSettings で…

f:id:sawalemontea:20170814101615p:plain

↓の画面を開いたら、赤丸のAdd Open Scenesをクリックします。

f:id:sawalemontea:20170814101644p:plain


これで追加されました。
スクショではもともと追加されていますね(汗)

これで元のシーンに戻りましょう。


スクリプトの冒頭にUsing UnityEngine.SceneManegiment;を書く

それではスクリプトを書いていきます。

まず、シーン遷移の機能を使えるようにするために
スクリプトの↓の位置にusing UnityEngine.SceneManagement;と書きます。

f:id:sawalemontea:20170814102332p:plain


f:id:sawalemontea:20170814102154p:plain


こんな感じです。
これで②はOKです。


③遷移したいタイミングでSceneManeger.LoadScene()

いよいよシーン遷移の部分を書きます。

遷移先のシーン名をstring型の変数で指定します。

SceneManager.LoadScene("GameOver");

こんな感じです。
もし使い回したいなら、あらかじめ作ったstring型の変数で

SceneManager.LoadScene(X);

のように書いて、変数を書き換えてつかいます。

衝突判定と合わせて使う場合は、↓みたいになります。

 private void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.tag == "GameOver")
        {
            SceneManager.LoadScene("GameOver");
        }
    }

例ではタグと遷移先が同じ名前なので紛らわしいですが、

3行目が  tag == "接触相手のタグ名" で、

5行目が  LoadScene("遷移先のシーン名") です。

この例
だと、
このスクリプトをつけたオブジェクトが
GameOverタグのついたオブジェクトと衝突すると
GameOverシーンに遷移します。


実際に使ってみたものがこちらです

sawalemounity.hatenablog.com


Next
sawalemounity.hatenablog.com

前回
sawalemounity.hatenablog.com