Exemple #1
0
        /// <summary>
        /// シーン作成ダイアログ表示
        /// </summary>
        public static void DisplayBuildDialog(string directory)
        {
            // ダイアログを開く
            string fullpath = EditorUtility.SaveFilePanel("シーン作成先のフォルダ選択", directory, "", "");

            if (string.IsNullOrEmpty(fullpath))
            {
                return;
            }

            string path = "Assets" + fullpath.Substring(Application.dataPath.Length);

            if (string.IsNullOrEmpty(path))
            {
                return;
            }
            if (AssetChecker.Exists(path))
            {
                return;
            }

            // シーン作成
            bool success;
            var  data = TryBuildScene(path, out success);

            if (success)
            {
                UnityCallback.SetActionOnCompiled(new TemporaryFileData(data));
            }
        }
Exemple #2
0
        /// <summary>
        /// シーンの作成
        /// </summary>
        /// <param name="path">作成先のファイルパス</param>
        static TemporaryFileData.Data TryBuildScene(string path, out bool success)
        {
            if (AssetChecker.Exists(path))
            {
                Debug.LogFormat("Exist:{0}", path);
                success = false;
                return(default(TemporaryFileData.Data));
            }

            // フォルダ作成
            string rootFolderPath = FolderBuilder.BuildFolderSet(path);

            if (string.IsNullOrEmpty(rootFolderPath))
            {
                success = false;
                return(default(TemporaryFileData.Data));
            }

            // シーンを開く
            var templateScene = DataLoader.LoadSceneTemplate();

            EditorSceneManager.OpenScene(AssetDatabase.GetAssetPath(templateScene), OpenSceneMode.Additive);

            #warning TODO: JSONを取得してScriptDependencyからスクリプトを作成する

            var rootFolderName = rootFolderPath.Split('/').Last();

            // シーンを保存
            var scenePath = string.Format("{0}/{1}.unity", rootFolderPath, rootFolderName);
            EditorSceneManager.SetActiveScene(EditorSceneManager.GetSceneByName(templateScene.name));
            EditorSceneManager.SaveScene(EditorSceneManager.GetSceneByName(templateScene.name), scenePath);

            // プログレスバー
            EditorUtility.DisplayProgressBar(string.Format("シーン\"{0}\"の作成中...", rootFolderName), "", 0f);

            // スクリプト作成
            var scriptDependency = DataLoader.LoadScriptDependency();
            var scripts          = ScriptBuilder.BuildScripts(rootFolderPath + "/" + Config.ScriptFolder, rootFolderName, scriptDependency);

            // コンパイル終了時の処理 設定
            var data = new TemporaryFileData.Data
            {
                SceneName  = rootFolderName,
                FolderPath = rootFolderPath,
                Scripts    = scripts.ToArray(),
            };

            success = true;
            return(data);
        }