コガネブログ

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

【Unity】テスト用のシーンは Scenes In Build のリストの末尾に追加されるようにするエディタ拡張

概要

using System.Linq;
using UnityEditor;

[InitializeOnLoad]
public static class Example
{
    static Example()
    {
        EditorBuildSettings.sceneListChanged += OnChanged;
    }

    private static void OnChanged()
    {
        var scenes = EditorBuildSettings.scenes;

        EditorBuildSettings.scenes = scenes
            .OrderBy( c => c.path.StartsWith( "Assets/Scenes/Test/" ) )
            .ToArray()
            ;
    }
}

例えば上記のようなエディタ拡張を作成すると

f:id:baba_s:20200304113318g:plain

「Assets/Scenes/Test/」フォルダ以下のシーンを Scenes In Build のリストに追加する時に
自動でリストの末尾に追加されるようになります

例えばリリースビルド時はテストシーンを除外する、といったことをする際に
テストシーンがリスト内に散在していると、
テストシーン除外後に Build Index がズレて正常にシーン遷移できなくなることがあります

上記のようなエディタ拡張を作ることで、そのような問題を回避することができます