📗
【Unity】ReadOnly属性: Inspectorで編集不可のパラメータを表示したい
はじめに
初めての方も、そうでない方もこんにちは!
現役ゲームプログラマーのたむぼーです。
自己紹介を載せているので、気になる方は見ていただければ嬉しいです!
今回は
UnityのInspectorで編集不可のパラメータを表示する方法
を紹介します
処理全体
ReadOnlyAttribute.csとReadOnlyDrawer.csの2つ作成します。
ReadOnlyAttributeは任意のフォルダに格納します。
ReadOnlyDrawerはEditorフォルダに格納してください。
ReadOnlyAttribute.cs
using UnityEngine;
public class ReadOnlyAttribute : PropertyAttribute
{
}
ReadOnlyDrawer.cs
#if UNITY_EDITOR
using UnityEngine;
using UnityEditor;
[CustomPropertyDrawer(typeof(ReadOnlyAttribute))]
public class ReadOnlyDrawer : PropertyDrawer
{
/// <summary>
/// OnGUI
/// </summary>
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
{
EditorGUI.BeginDisabledGroup(true);
EditorGUI.PropertyField(position, property, label, true);
EditorGUI.EndDisabledGroup();
}
/// <summary>
/// プロパティの高さを調整する
/// </summary>
public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
{
return EditorGUI.GetPropertyHeight(property, label, true);
}
}
#endif
使い方
Inspectorで編集不可にしたい変数にReadOnly属性を追加
ReadOnlyTest.cs
using UnityEngine;
public class ReadOnlyTest : MonoBehaviour
{
[ReadOnly]
public Vector3 parameter1;
[SerializeField, ReadOnly]
private Vector3 _parameter2;
}

Discussion