[Unity] 읽기전용 인스펙터 프로퍼티
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
728x90
반응형
'Dev Tools > Unity' 카테고리의 다른 글
[Unity] Unity Hub 라이선스 활성화 오류 (0) | 2023.03.11 |
---|