Unityでインスペクターにメモを残すスクリプトメモ。名前空間や注意点、ヒエラルキーの一番上にする機能など

unity メモ スクリプト インスペクター Unity
※記事内に広告が含まれています。

バーチャル3Dクリエイター神部まゆみです(*^_^*)

この記事はUnityでインスペクターにメモを残すスクリプトを書いたのでそれについての記事です。

●PRスペース●

〇まゆみマート|BOOTH

BOOTHでVRoidテクスチャやVRChat向けオブジェクトなどを販売しています。いいねしてくれると励みになります(*^-^*)

インスペクターにメモが書けるスクリプト Memo.cs

めっちゃ短いです。これだけw

using UnityEngine;

public class Memo : MonoBehaviour
{
    [TextArea(5, 20)]
    [SerializeField]
    private string memo;
}

使い方:好きなオブジェクトにMemoコンポーネントをつける

普通にコンポーネントに追加で追加すればOK。

改行すれば勝手にテキストフィールドが伸びます。

unity メモ スクリプト インスペクター

作業記録や次やることなどをメモすると良いか…

3Dはやることがたくさんあるため、細かいタスクリストにして一つずつ潰していくのが良いか…。

シーンごとに作業履歴とかを残すのも良いかもしれない。他の人がどうやってるのかは知らないけども。

unity メモ スクリプト インスペクター
unity メモ スクリプト インスペクター

配布する場合は名前が被りやすいので、名前空間をつけて区別すると安全っぽい

こういう短いスクリプト、BOOTHなどでオマケとして同梱したくなるけど、名前が被りやすいので配布する場合は注意した方が良いっぽい。

namespaceで名前空間を付けると区別できるみたいなので、こうすると良いみたいです。MayumiMartは私のBOOTHのショップ名ね(^_^;)

using UnityEngine;

namespace MayumiMart
{
    public class Memo : MonoBehaviour
    {
        [TextArea(5, 20)]
        [SerializeField]
        private string memo;
    }
}

この場合は名前空間を使っているのでMayumiMart.Memoというクラス名になるので、プロジェクト内に別のMemo.csがあっても大丈夫っぽい。

↓意図的に別フォルダにMemo.csを作ってみたけど、Memo(MayumiMart)って書いてあってちゃんと区別されてますね。

unity メモ スクリプト インスペクター

BOOTHなどで複数商品を販売する場合、作者名やショップ名で上位フォルダを作って、その下に共通のCommonフォルダを作ってそこに入れておくと良いみたい。

unity メモ スクリプト インスペクター

これで配布する場合はMayumiMart/Common のフォルダは全て含めておけば、他の商品でもMemo.csが使える。

MayumiMart

 ーCommon

 ー商品A

 ー商品B

 ー商品C

って構造にして、

MayumiMart

 ーCommon

は必ず含める感じ。

追記:分かりやすいようヒエラルキーの一番上に持ってくるボタンも付けた

作業記録って名前の空のオブジェクトを作ってそこにMemoコンポーネントを付けたけど、ヒエラルキーの一番下になって分かりにくかったので一番上に持ってくるボタンを付けた。

unity メモ スクリプト インスペクター

これでヒエラルキーの一番上に持ってこれる。オブジェクトの子になってる場合はその中で一番上になるけど、分かりやすいようにシーン直下に置いた方がいいと思う。

unity メモ スクリプト インスペクター

疲れてる時などは「次何やるんだっけ?(^^; ああもういいか寝るか…」となるため、可能な限り分かりやすくしておいたほうがいいですね…。

明日や明後日の自分は今日よりも頭が悪く怠け者という想定で、可能な限り分かりやすく、タスクはできるだけ細かくしておいたほうがいいと思いますw

最もアテにできないのは未来の自分と考え、とにかく分かりやすく次のタスクを細かく分かりやすくお膳立てしておきましょう。

コード

using UnityEngine;

#if UNITY_EDITOR
using UnityEditor;
#endif

namespace MayumiMart
{
    public class Memo : MonoBehaviour
    {
        [TextArea(8, 30)]
        [SerializeField]
        private string memo;

#if UNITY_EDITOR

        [ContextMenu("Hierarchyの一番上へ")]
        public void MoveToTop()
        {
            transform.SetSiblingIndex(0);

            EditorUtility.SetDirty(transform);

            Debug.Log(
                $"[{gameObject.name}] をHierarchyの一番上へ移動しました。"
            );
        }

#endif
    }


#if UNITY_EDITOR

    [CustomEditor(typeof(Memo))]
    public class MemoEditor : Editor
    {
        public override void OnInspectorGUI()
        {
            DrawDefaultInspector();

            EditorGUILayout.Space(10);

            Memo memo = (Memo)target;

            if (GUILayout.Button(
                "Hierarchyの一番上へ",
                GUILayout.Height(30)))
            {
                memo.MoveToTop();
            }
        }
    }

#endif
}

namespaceがないバージョンも。

using UnityEngine;

#if UNITY_EDITOR
using UnityEditor;
#endif

public class Memo : MonoBehaviour
{
    [TextArea(8, 30)]
    [SerializeField]
    private string memo;

#if UNITY_EDITOR

    [ContextMenu("Hierarchyの一番上へ")]
    private void MoveToTop()
    {
        transform.SetSiblingIndex(0);

        EditorUtility.SetDirty(transform);

        Debug.Log(
            $"[{gameObject.name}] をHierarchyの一番上へ移動しました。"
        );
    }

#endif
}


#if UNITY_EDITOR

[CustomEditor(typeof(Memo))]
public class MemoEditor : Editor
{
    public override void OnInspectorGUI()
    {
        DrawDefaultInspector();

        EditorGUILayout.Space(10);

        Memo memo = (Memo)target;

        if (GUILayout.Button(
            "Hierarchyの一番上へ",
            GUILayout.Height(30)))
        {
            memo.SendMessage(
                "MoveToTop",
                SendMessageOptions.RequireReceiver
            );
        }
    }
}

#endif

おわりに

手軽に書けるスクリプトだけど、単純なだけに名前が被りやすいから注意した方がいいですね(^_^;)

Unityはやることが多いからタスクリストや作業記録、次にやることなどをメモしておくと良いかもしれません。

まぁ外部のタスクリストアプリを使ってる人も多いと思うけど、シーンごとに記録を残しておいた方が分かりやすいかな。

また何かあれば追記します(*^_^*)

タイトルとURLをコピーしました