【Unity】ラベルを利用したアセットの管理について
今回はエディタの話。
Unityで余り知られていない機能の一つにラベルがある。
ラベルはEvernoteで言う所の「タグ」みたいなもので、一つのアセットに複数登録して簡単に検索できるようにする仕組みだ。
どうもマニュアルを読む限り、Unityのプロジェクト管理はラベルを使って管理することも想定しているように見える。
docs.unity3d.com
下の画像はDLCマネージャーの関連アセットに同じ種類のラベルを貼りつけた物だ。
検索を「お気に入り」に登録すれば、クリック一つでラベルのついたアセット一覧を表示出来る。
上手く使えばシステムが関連しているアセットがどのフォルダにあっても一覧を取得出来るので、複数のフォルダを何度も往復するような手間を省く事ができる。
実際に触っている感じ、「シーン単位」もしくは「システム単位」でラベルを貼っておくと非常に使いやすいように感じる。「アセット(スクリプト)が何処のシステムで使われてるのか」が一発で判るし、「システムで使っているアセット一覧の取得」も簡単になる。
■ラベル設定が面倒くさい
さて、このラベルでプロジェクトを管理する手法だが、正直これも使いにくい部分がある。
即ち「一つのアセット毎に設定しなければならない」点だ。
というのも、複数のアセットを選択すると下の画像のようにラベルが表示されなくなる。
このせいで複数のアセットにラベルを設定することが出来ないので、ラベルを設定する事自体が非常に面倒な作業になってしまっている。
勿論、エディタ拡張にはラベルを管理する機能が幾つかあるので、拡張してしまえば済む話でもあるのだが。
またAsset Labelsの項目には表示できる範囲しかラベルを表示してくれないため、大量のラベルが付いている場合はラベル一覧から確認しなければならないのも面倒くさい。これもエディタ拡張すればry
誰かラベルを管理するアセット作らないかな・・・ (´・ω・`)
楽になりました。
ちなみに、アセットに付いてるラベルの一覧を取得するには、"Selection.objects" で選択中のオブジェクト一覧を取得した後、 AssetDatabase.GetLabels(Objecct obj) で取得出来る。
ラベルを登録する場合はAssetDatabase.SetLabels(Object obj, string[] labels)だ。