コガネブログ

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

【Unity】シーンのビルドインデックスを定数で管理するクラスを生成する拡張機能

概要

http://japan.unity3d.com/unite/unite2016/

Unite 2016の「モバイル端末向けのUnityアプリケーションの最適化実践テクニック」
の講演において、MaterialやAnimator、Shaderでパラメータを設定する場合、
プロパティ名でアクセスすると、内部でint型のハッシュ値への変換が行われてしまい、
少しだけ処理に時間がかかってしまうとのことでした

そして、以前、シーン名を定数で管理するクラスの作成方法を紹介しましたが
おそらく、シーン遷移時にもstring型のシーン名ではなく
int型のビルドインデックスを渡した方が良いのかなと思い、
シーンのビルドインデックスを定数で管理するクラスを生成する拡張機能を作りました

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

/// <summary>
/// シーンのビルドインデックスを定数で管理するクラス
/// </summary>
public static class SceneBuildIndex
{
    public const int Title = 0;
    public const int MainMenu = 1;
    public const int Game = 2;
}

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

SceneManager.LoadScene(SceneBuildIndex.Title);

関連記事