На самом деле текст Label
должен работать точно так, как вы хотите.
(Для меня, если я добавлю выпадающий список в пустую сцену, измените текст метки и нажмите «Воспроизвести», я вижу метку, пока не изменю значение.)
Однако я думаю, что ваша проблема в том, что где-то в вашем коде вы уже изменили value
вашего Dropdown
, например. до 0
или -1
, в результате чего оно переходит к 0
. Убедитесь, что вы не трогаете value
до того, как это сделает пользователь.
И еще: метка также может быть изменена на какую-то строку, value
всегда будет установлена на 0
по умолчанию. Поэтому простейшим решением может быть добавление дополнительной опции:
using UnityEngine;
using UnityEngine.UI;
[RequireComponent(typeof(Dropdown))]
[DisallowMultipleComponent]
public class DropdownPlaceholder : MonoBehaviour
{
private Dropdown _dropdown;
[SerializeField] private string _placeHolder;
// Use this for initialization
private void Start()
{
_dropdown = GetComponent<Dropdown>();
// add the placeholder option
_dropdown.options.Insert(0, new Dropdown.OptionData(_placeHolder));
// after adding an option Dropdown adjusts the value so
// we have to set it to the new option
_dropdown.value = 0;
// Dropdown still wouldn't adopt the label -> set the label
_dropdown.captionText.text = _placeHolder;
}
}
Теперь вы можете просто установить для текста заполнителя все, что вы хотите.
Затем позже, где бы вы ни использовали значение, вы просто должны помнить, чтобы использовать _dropdown.value -1
вместо этого, поскольку вы хотите игнорировать первую запись.