Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.IO;
- using System.Linq;
- using UnityEditor;
- using UnityEngine;
- public class BuildSettingScenesCreator
- {
- private const string sceneDir = "Scenes";
- private const string initialLoadScene = "Scenes/Title.unity";
- [MenuItem("Edit/BuildSettings/CreateScenes")]
- public static void CreateBuildSettingScenes()
- {
- if (!CheckExists())
- {
- return;
- }
- Create();
- }
- private static bool CheckExists()
- {
- string sceneDirFullPath = GetFullPath(sceneDir);
- string initialLoadSceneFullPath = GetFullPath(initialLoadScene);
- // 存在チェック
- if (!Directory.Exists(sceneDirFullPath))
- {
- Debug.LogError("Not Found Dir :" + sceneDirFullPath);
- return false;
- }
- if (!File.Exists(initialLoadSceneFullPath))
- {
- Debug.LogError("Not Found Inital Load Scene : " + initialLoadSceneFullPath);
- return false;
- }
- return true;
- }
- private static void Create()
- {
- string sceneDirAssetsPath = GetAssetsPath(sceneDir);
- string initialLoadSceneAssetsPath = GetAssetsPath(initialLoadScene);
- var scenes = AssetDatabase.FindAssets("t:Scene", new string[] {sceneDirAssetsPath})
- .Select(guid => AssetDatabase.GUIDToAssetPath(guid))
- .OrderBy(path => path)
- .Where(path => path != initialLoadSceneAssetsPath)
- .Select(path => new EditorBuildSettingsScene(path, true))
- .ToList();
- // 初回に呼び込まれて欲しいシーンを先頭に配置する
- scenes.Insert(0, new EditorBuildSettingsScene(initialLoadSceneAssetsPath, true));
- EditorBuildSettings.scenes = scenes.ToArray();
- AssetDatabase.SaveAssets();
- Debug.Log("Created BuildSettings.");
- }
- private static string GetFullPath(string path)
- {
- return Application.dataPath + "/" + path;
- }
- private static string GetAssetsPath(string path)
- {
- return "Assets/" + path;
- }
- }
Add Comment
Please, Sign In to add comment