【Unity】 LoadLevelは古いのでLoadSceneを使う
古いUnityの本でお勉強していると、シーンを遷移するときにLoadLevel()を使っていることがあります。
でも、LoadLevel()はもう古いので、LoadScene()を使いましょう。
LoadLevel()はもう古い
シーン(場面)の切り替えのないゲームはあまりありませんので、Unityでシーンの切り替え処理を書くことは避けて通れません。
古い本の内容にならってコードを書いていると、シーンの遷移にLoadLevel()を使っていることがあります。
おなじみ『Unity5 3D/2Dゲーム開発実践入門』だと、272ページですね。
スタート用のボタンを作ってスクリプトをくっつけ、それを押したらタイトルのシーンからメインのシーンへ遷移する処理です。
public void OnStartButtonClicked() { Application.LoadLevel("Main"); }
ところが、新しいバージョンのUnityだとなんか緑の波線がでちゃうんですよね。
マウスのカーソルをあてると、
「’Application.LoadLevel(string)’ is obsolete: ‘Use SceneManager.LoadScene’」
obsolete = 時代遅れ らしいです・・・
このままビルドもできちゃうので時代遅れの不器用な男を演じるのもいいですが、なんだかモヤモヤしてしまいますから時代の最先端を行きましょう。
SceneManagerのLoadScene()を使おう
ということで、Unity5.3から採用されたLoadScene()を使うことにしましょう。
と、その前に。
LoadScene()を使うにはSceneManagerとやらが必要なので、まずはスクリプトファイルの先頭部分に1行追加しておきましょう。
using System.Collections; using UnityEngine; using UnityEngine.SceneManagement;
これで、LoadScene()が使えるようになりましたので、LoadLevel()を使ってたところを下記のように変更してLoadScene()に書き換えます。
(下のやつは、変更が分かりやすいようにコメントアウトしてますが削除しちゃってOKです)
public void OnStartButtonClicked() { // Application.LoadLevel("Main"); SceneManager.LoadScene("Main"); }
シーンの切り替えにBuild Settingsをお忘れなく
そうそう、「LoadScene()の記述も無事終了したしこれでOK」とビルドしていざ画面遷移用のボタンを押してもウンともスンとも反応しない・・・
そんな方は、あわてずさわがずBuild Settingsを開きましょう。
[File] > [Build Settings…] でウィンドウを開いて、
「Scenes In Build」の中にProjectからシーンをドラッグドロップで突っ込んじゃいます。
Titleという名のタイトル画面とMainという名のメイン画面の2つのシーンだけでしたらこのように・・・
これで無事にシーンの切り替えができるようになりました。
ということで、モヤモヤを解消して未来に突き進みましょう!