コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】シーン名を定数で管理するクラスを生成する拡張機能

概要

// タイトル画面に遷移します
Application.LoadLevel("Title");

Unityでは他のシーンに遷移する時にシーンファイルの名前を指定して遷移しますが
このままだとシーンファイルが削除されたりリネームされてもエラーにならず
ゲーム実行中に上記のような処理に入って初めてエラーになります

なので、僕は下記のようなエディタ拡張の機能を使っています

上記のファイルをUnityプロジェクトのEditorフォルダに追加すると
Unityエディタのメニューに「Tools>Create>Scene Name」が追加されます
これを選択するとシーン名を定数で管理するSceneName.csが生成されます

/// <summary>
/// シーン名を定数で管理するクラス
/// </summary>
public static class SceneName
{
    public const string Title = "Title";
    public const string MainMenu = "MainMenu";
    public const string Game = "Game";
}

あとはシーンを遷移する時にこのクラスを使用します

// タイトル画面に遷移します
Application.LoadLevel(SceneName.Title);

こうしておくと、例えばTitleシーンが削除された場合に
SceneNameクラスからTitle定数が消えてコンパイルエラーになるので
ゲーム実行時エラーを防ぐことができます

関連記事