FC2ブログ
    10 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.» 12

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【ハルシオンブログ】シーンをロードするエディタ拡張 

    こんにちは。
    大坂です。

    シーンが多くて、さらにプロジェクトフォルダ内でシーンが別々の場所に置いてあるとシーンを開くのが面倒なときがありますね。
    シーン名で検索してHierarchyにドラッグ&ドロップしたり、ダブルクリックして開いたり。

    プロジェクト内のシーンを検索するエディタ拡張で楽にシーンを開けるので紹介。

    using UnityEditor;
    using UnityEngine;
    using UnityEditor.SceneManagement;
    using System.IO;

    public class SceneLoader : EditorWindow
    {
    private readonly string projectFolderName = "ProjectName";
    private readonly int buttonWidth = 80;

    private Vector2 _scrollPosition = Vector2.zero;
    private string[] scenePaths;

    [MenuItem("Window/SceneLoader")]
    public static void OpenWindow() {
    EditorWindow.GetWindow();
    }

    private void OnEnable() {
    // 全てシーンを検索
    var scenes = AssetDatabase.FindAssets("t:Scene");
    scenePaths = new string[scenes.Length];
    for (var i = 0; i < scenes.Length; ++i) {
    // シーンのパスを取得
    scenePaths[i] = AssetDatabase.GUIDToAssetPath(scenes[i]);
    }
    Repaint();
    }

    private void OnGUI() {
    _scrollPosition = EditorGUILayout.BeginScrollView(_scrollPosition);
    foreach (string path in scenePaths) {
    // 指定したプロジェクト名のフォルダのみ表示
    if(path.Contains(projectFolderName)) {
    EditorGUILayout.BeginHorizontal();
    GUILayout.Label(Path.GetFileNameWithoutExtension(path), GUILayout.Width(100));
    if (GUILayout.Button("Load", GUILayout.Width(buttonWidth))) {
    // シーンをHierarchyに追加。他のを閉じて指定したものだけを開く場合は「OpenSceneMode.Additive」をけす。
    EditorSceneManager.OpenScene(path, OpenSceneMode.Additive);
    }
    var scene = EditorSceneManager.GetSceneByPath(path);
    if (GUILayout.Button("UnLoad", GUILayout.Width(buttonWidth))) {
    // シーンをアンロード
    EditorSceneManager.CloseScene(scene, false);
    }
    if (GUILayout.Button("Remove", GUILayout.Width(buttonWidth))) {
    // シーンをHierarchyから削除
    EditorSceneManager.CloseScene(scene, true);
    }
    EditorGUILayout.EndHorizontal();
    }
    }
    EditorGUILayout.EndScrollView();
    }
    }

    こんな感じで作って開くとこんなWindowが作られます。


    シーンを探したりが面倒な人は使ってみてくださいまし。
    ではではノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    コメント

    コメントの投稿

    Secret

    トラックバック

    トラックバックURL
    →http://halcyonsystemblog.jp/tb.php/904-081490b4
    この記事にトラックバックする(FC2ブログユーザー)