6000.2.10f1でClearValueが実装された
UIToolkitにはIntegerFieldやFloatFieldなど、数値を入力するためのInputFieldが用意されている
これらは通常のTextFieldと同様に、空欄時に表示されるPlaceholderを表示できる
しかし、これまではスクリプトから空欄にすることができず、Placeholderを表示することができなかった
6000.2.10f1でClearValueが実装された
6000.2.10f1で、親クラスとなる TextInputBaseField<T>へClearValueが追加された
これは、InputFieldを空欄にするためのメソッドで、そのInputFieldで設定されたデフォルト値を無視して空欄にできる
試す
まず、以下のスクリプトでClearValueを使わない場合を検証する
public void CreateGUI()
{
// Each editor window contains a root VisualElement object
VisualElement root = rootVisualElement;
// Instantiate UXML
VisualElement labelFromUXML = m_VisualTreeAsset.Instantiate();
var textField = labelFromUXML.Q<TextField>("textField");
var integerField = labelFromUXML.Q<IntegerField>("integerField");
var button = labelFromUXML.Q<Button>();
button.clickable.clicked += () =>
{
textField.value = default;
integerField.value = default;
};
root.Add(labelFromUXML);
}
すると、TextFieldはPlaceholderが表示されるが、IntergerFieldはデフォルト値の0が表示される

これは割と当然で、intのdefalutは0なので0が表示される
intergerField.valueの方はintなので、空欄にするすべがない
そこで、以下のようにClearValue()を使うよう修正する
public void CreateGUI()
{
// Each editor window contains a root VisualElement object
VisualElement root = rootVisualElement;
// Instantiate UXML
VisualElement labelFromUXML = m_VisualTreeAsset.Instantiate();
var textField = labelFromUXML.Q<TextField>("textField");
var integerField = labelFromUXML.Q<IntegerField>("integerField");
var button = labelFromUXML.Q<Button>();
button.clickable.clicked += () =>
{
textField.value = default;
integerField.ClearValue();
};
root.Add(labelFromUXML);
}
するとIntegerValueも空欄になり、Placeholderが表示される

参考


