便條紙, editor notes

想到一個有趣的寫法, 來把物件上的提示弄得美觀一點.
直接把 Unity3D 的 Hotkey 拿來玩了.

Result:

note_editor

 

Note.cs

using UnityEngine;

namespace Kit
{
	public class Note : MonoBehaviour
	{
		private enum eMessageType
		{
			None = 0,
			Info = 1,
			Warning = 2,
			Error = 3
		}
		[SerializeField] eMessageType type = eMessageType.Info;
		[SerializeField] string note;
	}
}

NoteEditor.cs

using UnityEngine;
using UnityEditor;

namespace Kit
{
	[CustomEditor(typeof(Note))]
	public class NoteEditor : Editor
	{
		SerializedProperty noteProp, typeProp;
		void OnEnable()
		{
			noteProp = serializedObject.FindProperty("note");
			typeProp = serializedObject.FindProperty("type");
		}
		public override void OnInspectorGUI()
		{
			if (string.IsNullOrEmpty(noteProp.stringValue))
				EditorGUILayout.HelpBox("Modify : Ctrl + Shift + A", MessageType.Info);
			else
				EditorGUILayout.HelpBox(noteProp.stringValue, (MessageType)typeProp.enumValueIndex);

			if (!((Component)target).gameObject.activeSelf)
			{
				EditorGUI.BeginChangeCheck();
				EditorGUILayout.PropertyField(typeProp);
				noteProp.stringValue = EditorGUILayout.TextArea(noteProp.stringValue, GUILayout.MinHeight(100f), GUILayout.ExpandHeight(true));
				if (EditorGUI.EndChangeCheck())
				{
					serializedObject.ApplyModifiedProperties();
					serializedObject.Update();
				}
			}
		}
	}
}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

*

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料