728x90
반응형

이 속성을 지정해주면 인스펙터 창에서 값을 볼 수는 있으나 변경할 수는 없다.

 

  • [ReadOnly] 혹은 [ReadOnly(false)] : 항상 수정할 수 없다.
  • [ReadOnly(true)] : 게임이 실행 중인 동안 수정할 수 없다.

 

using UnityEngine;
using System;

#if UNITY_EDITOR
namespace UnityEditor
{
    [CustomPropertyDrawer(typeof(ReadOnlyAttribute), true)]
    public class ReadOnlyAttributeDrawer : PropertyDrawer
    {
        // Necessary since some properties tend to collapse smaller than their content
        public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
        {
            return EditorGUI.GetPropertyHeight(property, label, true);
        }

        // Draw a disabled property field
        public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
        {
            GUI.enabled = !Application.isPlaying && ((ReadOnlyAttribute)attribute).runtimeOnly;
            EditorGUI.PropertyField(position, property, label, true);
            GUI.enabled = true;
        }
    }
}
#endif

[AttributeUsage(AttributeTargets.Field)]
public class ReadOnlyAttribute : PropertyAttribute
{
    public readonly bool runtimeOnly;

    public ReadOnlyAttribute(bool runtimeOnly = false)
    {
        this.runtimeOnly = runtimeOnly;
    }
}

참고사이트

https://openlevel.postype.com/post/683234

 

Unity3D 읽기전용 인스펙터 프로퍼티

이 어트리뷰트를 지정해주면 인스펙터에서 값을 볼 수는 있으나 값을 변경할 수는 없다. How to make a readonly property in inspector? http://answers.unity3d.com/questions/489942/how-to-make-a-readonly-property-in-inspector.htm

openlevel.postype.com

 

728x90
반응형

'Dev Tools > Unity' 카테고리의 다른 글

[Unity] Unity Hub 라이선스 활성화 오류  (0) 2023.03.11