読者です 読者をやめる 読者になる 読者になる

NinaLabo

個人ゲーム開発者の技術メモ

Unity 5.3 で Application.LoadLevel が Obsolete になりました

Unity C#

シーンを遷移するときに呼び出す Application.LoadLevel が、Unity 5.3 から非推奨になったんですね。MonoDevelop で Application.LoadLevel を呼び出している箇所に警告が出ていました。

`UnityEngine.Application.LoadLevel(int)' is obsolete: `Use SceneManager.LoadScene'

`UnityEngine.Application.LoadLevel(string)' is obsolete: `Use SceneManager.LoadScene'

SceneManager に置き換えるだけなので簡単でしたが、SceneManager すら知らなかったので、ちょっとびっくりしました。対応をまとめておきます。

シーン名でのシーン遷移

シーン遷移で、よく使うのはこれですね。遷移したいシーン名をパラメータで指定する方法です。

Unity 5.2

Application.LoadLevel ("BattleScene");

Unity 5.3

SceneManager.LoadScene ("BattleScene");

 ※ SceneManager を使用するには、名前空間 (UnityEngine.SceneManagement)が定義されている必要があります!!

using UnityEngine.SceneManagement; 

シーン番号でのシーン遷移

シーン名での遷移があれば、シーン番号(インデックス)での遷移はあまり使わない気もしますけどね。Application.LoadLevel でも SceneManager.LoadScene でも int型を引数にもつ オーバーロードメソッドが用意されています。

Unity 5.2

Application.LoadLevel (0);

Unity 5.3

SceneManager.LoadScene (0);

現在のシーン名を取得

現在表示されているシーン名の取得です。

Unity 5.2

string sceneName = Application.loadedLevelName;

Unity 5.3

string sceneName = SceneManager.GetActiveScene ().name;

 

参考資料

たしかに、ググっても情報があんまり見当たらなかったです。とても参考になりました。

qiita.com 

SceneManager の公式APIドキュメント。

docs.unity3d.com

Application.LoadLevel のAPIドキュメントも念のため。

docs.unity3d.com