バーチャル3Dクリエイター神部まゆみです(*^_^*)
この記事はUnityでインスペクターにメモを残すスクリプトを書いたのでそれについての記事です。
インスペクターにメモが書けるスクリプト Memo.cs
めっちゃ短いです。これだけw
using UnityEngine;
public class Memo : MonoBehaviour
{
[TextArea(5, 20)]
[SerializeField]
private string memo;
}
使い方:好きなオブジェクトにMemoコンポーネントをつける
普通にコンポーネントに追加で追加すればOK。
改行すれば勝手にテキストフィールドが伸びます。

作業記録や次やることなどをメモすると良いか…
3Dはやることがたくさんあるため、細かいタスクリストにして一つずつ潰していくのが良いか…。
シーンごとに作業履歴とかを残すのも良いかもしれない。他の人がどうやってるのかは知らないけども。


配布する場合は名前が被りやすいので、名前空間をつけて区別すると安全っぽい
こういう短いスクリプト、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)って書いてあってちゃんと区別されてますね。

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

これで配布する場合はMayumiMart/Common のフォルダは全て含めておけば、他の商品でもMemo.csが使える。
MayumiMart
ーCommon
ー商品A
ー商品B
ー商品C
って構造にして、
MayumiMart
ーCommon
は必ず含める感じ。
追記:分かりやすいようヒエラルキーの一番上に持ってくるボタンも付けた
作業記録って名前の空のオブジェクトを作ってそこにMemoコンポーネントを付けたけど、ヒエラルキーの一番下になって分かりにくかったので一番上に持ってくるボタンを付けた。

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

疲れてる時などは「次何やるんだっけ?(^^; ああもういいか寝るか…」となるため、可能な限り分かりやすくしておいたほうがいいですね…。
明日や明後日の自分は今日よりも頭が悪く怠け者という想定で、可能な限り分かりやすく、タスクはできるだけ細かくしておいたほうがいいと思います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はやることが多いからタスクリストや作業記録、次にやることなどをメモしておくと良いかもしれません。
まぁ外部のタスクリストアプリを使ってる人も多いと思うけど、シーンごとに記録を残しておいた方が分かりやすいかな。
また何かあれば追記します(*^_^*)


