はじめに
Unityを使う上でPrefabの存在は欠かせないものですが、実際に使うと使いずらい部分が何点かあります。
特に自分は、
- Pojectビューでは2階層までしか表示されない
- Scene上に配置しないとPrefab内部を編集できない(Deleteなど)
- ネスト化ができない
この3つが使いずらい部分に感じています。
ネスト化に関しては @kyubuns さんが以下のサイトにてネスト化ツールを公開しているためそちらを参照するとして、今回はそれ以外を対処していきます。
https://qiita.com/kyubuns/items/5741e5281f4bb8de656c
環境
Unity 2017 4.1f1
作ったもの
いろいろと解説をする前に、早速作ったものを紹介します。
名は『Prefab Editor』
これを使うことで、いままでScene上に配置しなければあまり編集できなかったPrefabが編集できるようになります。
このエディタ拡張では、Projectビューで選択したPrefabがPrefab EditorのWindowに表示されるようになっています。
Window上の見た目はHierarchyをそのまんま参考にしています。そして、できることも、
- Prefabの3階層以下を表示し、選択するとInspector上にも表示される
- GameObjectの親子関係を編集できる
- 別のPrefabやScene上に配置されているGameObjectを中につっこめる
- 二回クリックするとリネームできる
- 右クリックでGameObjectを作成したり削除したりできる
- etc...
このように、ProjectビューからScene上に配置しなくても、Hierarchy上とほとんど同じことができるようになっています。
使い方
以下のリンクからダウンロードできるpackageをダブルクリックしてUnityにインポートしてください。
https://github.com/yukiringo/PrefabEditor/raw/master/prefab_editor.unitypackage
Window -> Prefab Editor
を選択します。
そして、Projectビューにある編集したいPrefabを選択してください。
Prefab EditorのWindow上に、選択したPrefabがHierarchyへ配置したように表示されていると思います。
あとは、Hierarchyでやるのと同じように編集してもらえばOKです。
簡単に解説
このまま終わるのもあれなので、使った機能について紹介します。
今回はHierarchyのような見た目にするため、Unity 5.6にて追加されたTreeViewを用いています。このTreeViewはHierarchyにも使用されているらしいです。
なので、この機能を使えばある程度楽にHierarchyを再現することができます。
詳細: https://docs.unity3d.com/Manual/TreeViewAPI.html
ですが実は自分、最初この機能の存在を知りませんでした…
なので、この機能を知るまではFoldoutなどを使って地道にやっていました(めちゃくちゃ面倒だった)
TreeViewは高機能なので、もし似たようなエディタ拡張をする際はぜひ使ってみてください。
まとめ
これでPrefabをいちいちScene上に配置せずとも編集できるようになりました。
これによって劇的に楽になるわけではないですが、少しでも作業効率が上がればいいなと思います。
こちらはgithubにて公開しています。
https://github.com/yukiringo/PrefabEditor
バグ報告や感想、意見などお待ちしております。
https://twitter.com/_ykringo