Version: Unity 6.0 (6000.0)
言語 : 日本語
バインド可能な要素のリファレンス
バインディングシステム実装の詳細

バインド可能なデータ型とフィールド

このセクションでは PropertyField がサポートするデータ型変換とフィールドについて説明します。

データ型変換

UI Toolkit のほとんどのビルトインコントロールは、特定のデータ型に対して INotifyValueChanged インターフェースを実装しています。例えば、DoubleFieldINotifyValueChanged<Double> を実装しています。つまり、DoubleField コントロールを double 型のプロパティにバインドできます。バインディングシステムを使用すれば、もっと多くのデータ型をバインドできるようになります。例えば、int 型のプロパティを DoubleField にバインドすることができます。

以下の表は、バインドできるソースと対象となるデータ型の一覧です。

ソースのデータ型 INotifyValueChanged の対象データ型
long
  • long
  • int
  • string
  • float
int
  • int
  • string
  • float
double
  • double
  • float
float
  • float
  • double
char
  • char
  • string

ノート: データ損失を防ぐために、PropertyField を使用するか、または以下の PropertyField がサポートするフィールドの表に示す適切なデータ型を使用してください。

PropertyField がサポートするフィールド

Inspector ウィンドウにデータが入力されるときに、データ型に対してカスタムエディターが存在していない場合、バインディングシステムは InspectorElement.FillDefaultInspector() を呼び出します。これにより、SerializedObject 上の各 SerializedPropertyPropertyField が作成されます。

PropertyField には該当するコントロールがあります。例えば、int を表す IntegerField や、bool を表すToggleなど、一致するコントロールがあります。プロパティにサブプロパティがある場合、PropertyField には Foldout コントロールがあります。その Foldout には、各サブプロパティの下に適切なデフォルトコントロールがあります。プロパティにカスタムの PropertyDrawer を作成した場合は、PropertyDrawerCreatePropertyGUI() メソッドから返されるビジュアルツリーが代わりに使用されます。

ノート:

カスタム 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 (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

追加リソース

バインド可能な要素のリファレンス
バインディングシステム実装の詳細