見出し画像

【Unity】GameObjectにコメントをつける【エディタ拡張】

こんにちは。
Unityを触っていると[Hierarchy]や[Project]や[Inspector]、[Scene]などたくさんのウィンドウを行き来することになると思いますが、データが増えてくるにつれてGameObjectに与えた役割がなんであったかがすぐには判別できなくなってきますね。(少なくとも筆者はそう)

筆者は思いました。「After Effectsのようにデータごとにメモ程度のコメントを書ければいいのに」と。

■やりたいこと

・アイテムに一言コメントをつけたい

画像1

・できればヒエラルキー上で内容を確認し、編集したい

■制作した環境

・Win10
・Unity Version 2019.4.10f1

■ソースコード

今回は2つのソースファイルを使用します。

・GameObjectにアタッチするスクリプトです

// MyComments.cs

using UnityEngine;

#if UNITY_EDITOR
    public class MyComments : MonoBehaviour
    {
       [SerializeField][TextArea(5,10)]
       public string commentsText;
    }#endif

・Editorフォルダ以下に格納するスクリプトです

// ShowComments.cs

using UnityEngine;
using UnityEditor;
public class ShowComments : MonoBehaviour
{
   [InitializeOnLoadMethod]
   private static void HierarchyExtensionInit()
   {
       EditorApplication.hierarchyWindowItemOnGUI += AddCommentsField;
   }
   /// <summary>
   /// HierarchyにMyCommentsの内容を表示する
   /// </summary>
   private static void AddCommentsField(int instanceID, Rect rc)
   {
       var gameObject = EditorUtility.InstanceIDToObject(instanceID) as GameObject;
       if (gameObject != null)
       {
           var commComp = gameObject.GetComponent<MyComments>();
           if (commComp != null)
           {
               rc.xMin += rc.width - 150;
               rc.yMin += rc.height - 18;
               commComp.commentsText = EditorGUI.TextField(rc, commComp.commentsText);
           }
       }
   }
}


■解説

・実行方法
MyComments.cs を任意のGameObjectにアタッチするだけです。
アタッチ後はComments Textエリア内に任意の文章を入力してください。

・実行結果
下図のようになります。

画像2

・その他
ヒエラルキー上での表示位置については 次の数値を調整していい感じにしてください。

rc.xMin += rc.width - 150;
rc.yMin += rc.height - 18;


■機能について

・強化
以前に作成した、シーンテンプレートを作成するエディタ拡張で生成するGameObjectにあらかじめMyCommentsをアタッチするようにすれば手間は軽減すると思う。
もしくは、特定のGameObjectのときに追加できるようにさらに拡張する方法もあるならよさそう。

・シーンテンプレート作成
https://note.com/rusty_gear/n/n79759fb91c9a

・注意点
インスペクターでは複数行の入力が可能だが、ヒエラルキー上では1行分しか表示していない。これは行の高さを変更すればもっとたくさん表示可能だが、アイテム全体の行の高さには影響しないため、テキストエリアが他の行のテキストエリアと重なってしまう。なにかうまく回避する方法があるのだろうか。

それではよいUnityライフを٩( 'ω' )و


■参考

https://hacchi-man.hatenablog.com/entry/2020/01/27/220000

どうやらアタッチされているコンポーネントの種類をアイコンで表示できるらしい。それもよさそうに思う。

この記事が気に入ったらサポートをしてみませんか?