LoginSignup
3
1

More than 5 years have passed since last update.

UnityEditorのLayoutを切り替えれるTabWindowを作ってみた

Last updated at Posted at 2018-08-25

UnityTab

UnityEditorのlayoutを切り替えるWindowを作成しました。
UnityTabSample
Sample.gif

Unityでアニメーションをしよう、GameViewを大きくみよう、カスタムViewをメインでいじる...etc
のように制作をしていれば、切り替えたいタイミングが出てくることもあるかともいます。
なので、別Windowにtabを出して切り替えれたら便利じゃないかな?と思い作りました。

VisualStuidoでForm使って制作したので、Windowsのみの対応となっています。
UnityTab

プロジェクトは勢いで作って公開してます。
もしかすると、Windowsでも動かない場合もあるかもしれません。
UnityEditorのlayoutファイルである.wltは、自分の場合/Users/UserName/AppData/Roaming
/Unity/Editor-5.x/Preferences/Layouts/
.wltという感じにあったのでEditor-5.xが違うかもしれません。

少し解説

dll側は大したことはしてなく、Windowを出して*.wltを読み込んでTabControllerに突っ込んでTabを出してるだけです。
Tabを押したときのeventをUnityに通知する方法が思い浮かばなかったのでdelegateを渡すことで解決させています(力技感あるので変えたい…)

Unity側は

TabEditor.cs
public class TabEditor : Editor
{
    [MenuItem ("UnityTab/LaunchWindowStart")]
    static void LaunchWindowStart ()
    {
        UnityTab.TabMain.Launch (
            (int index) =>
            {
                var path = UnityTab.TabMain.GetFilePath[index];
                var tyWindowLayout = Type.GetType ("UnityEditor.WindowLayout,UnityEditor");
                var method = tyWindowLayout.GetMethod ("LoadWindowLayout", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static, null, new Type[] { typeof (string), typeof (bool) }, null);
                var assetPath = Path.Combine (Directory.GetCurrentDirectory (), path);
                method.Invoke (null, new object[] { assetPath, false });
            });
    }

    [MenuItem ("UnityTab/LaunchWindowStop")]
    static void LaunchWindowStop ()
    {
        UnityTab.TabMain.Stop ();
    }
}

となっており、またもや力業ぽいです。というか正式なAPIが提供されてないけど、メソッドたたきに行ってます。

WindowLayout.cs
を参照するとlayout系のメソッドが読めます

まとめ

結構力業を使ってるところがあるので、今のままだと使えない時がいずれ来るかもしれません。

使ってみたい方は使えるうちにお願いします。

今後は
- タブを可変にして好きなやつだけ追加できるようにする
- MacOS等の対応
- UnityEditorの上に追従するようにする

とか考えてますが、いつできるかはわからないです。やれればやります。(やるならElectron化とかかも)

変数命名とかFormは詳しくないので変なところある気はしてますが、ご容赦ください…

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1