【Unity】編集不可のパラメータをInspectorに表示する
デバッグ用のパラメータ表示など、編集はしたくないけどパラメータの表示だけはしたいってことが多々あります。それを実現するための手順になります。
目次
確認バージョン
2019.3.0f6
ソースコード
using UnityEngine;
public class ReadOnlyAttribute : PropertyAttribute
{
}
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif
#if UNITY_EDITOR
[CustomPropertyDrawer(typeof(ReadOnlyAttribute))]
public class ReadOnlyDrawer : PropertyDrawer
{
public override void OnGUI(Rect _position, SerializedProperty _property, GUIContent _label)
{
EditorGUI.BeginDisabledGroup(true);
EditorGUI.PropertyField(_position, _property, _label);
EditorGUI.EndDisabledGroup();
}
}
#endif
使い方
編集不可にしたいプロパティに対して ReadOnly 属性を付与します。
using System;
using System.Collections.Generic;
using UnityEngine;
public class Sample : MonoBehaviour
{
[Serializable]
public class SerializableClass
{
public string Name;
public int Value;
public SerializableClass(string _name, int _value)
{
Name = _name;
Value = _value;
}
}
[SerializeField, ReadOnly]
private Vector3 vector3;
[SerializeField, ReadOnly]
private List<SerializableClass> serializableClassListReadOnly = new List<SerializableClass>()
{
new SerializableClass("Test1", 1),
new SerializableClass("Test2", 2),
};
[SerializeField, ReadOnly]
private List<int> intListReadOnly = new List<int>() { 1, 2, 3, 4 };
}
結果
各要素がグレーアウトして編集不可状態になっています。Listの要素数であるSizeだけ編集出来てしまうので、こちらも解決したいところです。今後の課題です。