이 섹션에서는 데이터 유형 전환과 PropertyField에서 지원하는 필드를 설명합니다.
대부분의 UI 툴킷 빌트인 컨트롤은 특정 데이터 유형에 INotifyValueChanged 인터페이스를 구현합니다. 예를 들어 DoubleField는 INotifyValueChanged<Double>을 구현하므로 DoubleField 컨트롤을 double 유형의 프로퍼티에 바인드할 수 있습니다. 바인딩 시스템을 사용하여 더 많은 데이터 유형을 바인드할 수 있습니다. 예를 들어 int 유형의 프로퍼티를 DoubleField에 바인드할 수 있습니다.
다음 표에는 바인딩할 수 있는 소스 및 타겟 데이터 유형이 나열되어 있습니다.
| 소스 데이터 유형 | INotifyValueChanged의 타겟 데이터 유형 |
|---|---|
long |
|
int |
|
double |
|
float |
|
char |
|
참고: 데이터 손실을 방지하려면 PropertyField를 사용하거나 아래의 PropertyField에서 지원하는 필드 표에 표시된 대로 적절한 데이터 유형을 사용하십시오.
PropertyField에서 지원하는 필드인스펙터 창이 채워지면 유형에 대한 커스텀 에디터가 존재하지 않는 경우 바인딩 시스템이 InspectorElement.FillDefaultInspector()를 호출합니다. 이렇게 하면 SerializedObject의 각 SerializedProperty에 PropertyField가 생성됩니다.
각 PropertyField에는 일치하는 컨트롤(예: int를 나타내는 IntegerField나 bool을 나타내는 Toggle)이 있습니다. 프로퍼티에 하위 프로퍼티가 있는 경우, PropertyField에 Foldout 컨트롤이 있습니다. 해당 Foldout에는 각 하위 프로퍼티 아래에 적절한 기본 컨트롤이 있습니다. 프로퍼티에 커스텀 PropertyDrawer를 생성한 경우 대신 PropertyDrawer의 CreatePropertyGUI() 메서드에서 반환된 시각적 트리가 사용됩니다.
참고:
커스텀 UI를 생성할 때 특정 컨트롤을 찾을 수 없는 경우가 아니라면 PropertyField를 사용하지 마십시오. 예를 들어 시각적 트리에서 컨트롤을 생성하고 Color에 바인드하려면 PropertyField가 아닌 ColorField를 사용하십시오. 이렇게 하면 시각적 트리가 더 가벼워지고 작업 속도가 빨라집니다.
PropertyField를 사용하면 바인딩 후에 사용할 콘크리트 필드를 확인하기 때문에 추가 오버헤드가 발생합니다. 이 추가 단계는 성능에 영향을 미칠 수 있습니다. 그러나 PropertyField는 일부 용도에 유용합니다. 예를 들어 맞춤형 방식으로 특정 프로퍼티를 처리하는 데 사용할 수 있는 커스텀 드로어를 지원합니다. 그러면 그릴 필드 유형을 추측할 필요가 없어 오류를 줄일 수 있습니다.
다음 표에는 PropertyField에서 지원하는 필드와 해당 데이터 유형이 나열되어 있습니다.
| 필드 | 데이터 유형 |
|---|---|
BoundsField |
Bounds |
BoundsIntField |
BoundsInt |
ColorField |
Color |
CurveField |
AnimationCurve |
FloatField |
float |
GradientField |
Gradient |
Hash128Field |
Hash128 |
IntegerField |
int |
IntegerField |
int, for the ArraySize |
LayerMaskField |
unit |
LongField |
long |
ObjectField |
UnityEngine.Object |
PopupField<string> |
Enum |
RectField |
Rect |
RectIntField |
RectInt |
TextField |
string |
TextField(maxLength=1) |
char |
Toggle |
bool |
Vector2Field |
Vector2 |
Vector2IntField |
Vector2Int |
Vector3Field |
Vector3 |
Vector3IntField |
Vector3Int |
Vector4Field |
Vector4 |