OptionButton
Выпадающий выбор с отдельными индексами, ID и данными пунктов.
OptionButton показывает подпись выбранного пункта. Добавляйте строки через AddItem/AddIconItem; первый доступный пункт выбирается автоматически без ItemSelected. AddSeparator создаёт строку-разделитель и тоже увеличивает ItemCount. По умолчанию FitToLongestItem = true, AllowReselect = false, Selected = -1 до появления выбора.
Не смешивайте индекс и ID. Select, Selected и аргумент ItemSelected используют индекс строки с нуля, включая разделители в нумерации. GetSelectedId возвращает назначенный ID, GetItemIndex(id) находит его индекс или -1. Задавайте уникальные ID сами: автоматический ID берётся из индекса при создании и не является устойчивым ключом при перестройке списка. Metadata удобно хранит прикладное значение независимо от подписи.
Select(index) не испускает ItemSelected, даже при AllowReselect = true. Для загрузки сохранённой настройки вызовите Select(GetItemIndex(savedId)), предварительно проверив результат, затем явно примените настройку в модели. Select(-1) очищает выбор и подпись; GetSelectedId возвращает -1, GetSelectedMetadata — Nil. Используйте неотрицательные индексы для остальных операций.
SetItemDisabled запрещает пользовательский выбор, но не защищает от программного Select: он может выбрать отключённую строку или разделитель. Перед программным выбором проверяйте IsItemDisabled/IsItemSeparator. GetSelectableItem(false/true) ищет первый/последний доступный индекс, а не ID; при отсутствии возвращает -1.
После изменения структуры восстановите выбор явно. В текущей реализации RemoveItem перед выбранной строкой не уменьшает сохранённый индекс и может оставить его за границами. Первое SetItemCount после добавления строк из кода также может сбросить индекс в -1 при оставшейся отмеченной строке. До изменения сохраните стабильный ID; после изменения найдите его заново и вызовите Select, либо выберите доступный fallback. Не читайте metadata/ID через устаревший выбранный индекс.
ItemSelected сообщает индекс выбора из меню, ItemFocused — индекс подсвеченной строки, а не подтверждение. AllowReselect разрешает повторное уведомление при повторном выборе того же пункта через меню. FitToLongestItem учитывает все подписи/иконки и ширину меню; его кэш обновляется отложенно. false ориентируется на текущую кнопку и может менять её ширину при выборе.
GetPopup возвращает внутренний PopupMenu, принадлежащий кнопке. Не освобождайте и не переносите его. Для изменения строк используйте методы OptionButton: прямое редактирование PopupMenu может обойти обновление подписи, выбора и кэша. SearchBarEnabled включает поле поиска, SearchBarMinItemCount задаёт порог по числу строк без разделителей, fuzzy-настройки управляют поиском с пропусками. Это настройки меню, не изменение ID или metadata.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
OptionButtonКонструктор
public OptionButton();Создаёт пустой выбор: Selected = -1, FitToLongestItem = true, AllowReselect = false, ToggleMode = true, ActionMode = Press. PopupMenu создаётся внутренним скрытым ребёнком.
Свойства8
AllowReselectСвойство
public bool AllowReselect { get; set; }Разрешает повторный ItemSelected при выборе той же строки через меню, false по умолчанию. Не заставляет Select испускать сигнал.
FitToLongestItemСвойство
public bool FitToLongestItem { get; set; }Размер закрытой кнопки учитывает все пункты и ширину меню, true по умолчанию. Кэш обновляется отложенно; false использует текущую подпись/иконку и может менять ширину при выборе.
ItemCountСвойство
public int ItemCount { get; set; }Число всех строк, включая разделители. Setter создаёт пустые строки или удаляет хвост; count должен быть неотрицательным. Первое изменение после runtime-добавления может сбросить текущий индекс: после изменения вызовите Select явно.
SearchBarEnabledСвойство
public bool SearchBarEnabled { get; set; }Включает поле поиска меню, false по умолчанию. Видимость также зависит от SearchBarMinItemCount; не заменяет выбор и не меняет ID.
SearchBarFuzzySearchEnabledСвойство
public bool SearchBarFuzzySearchEnabled { get; set; }Поиск с допускаемыми пропусками, true по умолчанию. Сам по себе не включает поле поиска; число пропусков задаётся отдельно.
SearchBarFuzzySearchMaxMissesСвойство
public int SearchBarFuzzySearchMaxMisses { get; set; }Неотрицательное максимальное число пропусков fuzzy-поиска, 2 по умолчанию. Не означает число видимых результатов.
SearchBarMinItemCountСвойство
public int SearchBarMinItemCount { get; set; }Неотрицательный порог показа поиска по числу строк без разделителей, 0 по умолчанию. Учитывается при включённом SearchBarEnabled.
SelectedСвойство
public int Selected { get; set; }Текущий индекс строки, -1 при отсутствии выбора. Setter/Select не испускают ItemSelected и могут выбрать отключённый пункт или разделитель. После структурных изменений явно восстановите выбор по стабильному ID.
Методы44
AddIconItemvoid
public void AddIconItem(Texture2D texture, string label, int id = -1);Добавляет пункт с общей Texture2D, подписью и ID. Автоматический ID зависит от индекса при создании; первая доступная строка выбирается без сигнала.
| Имя | Тип | По умолчанию |
|---|---|---|
texture | Texture2D | — |
label | string | — |
id | int | -1 |
textureДобавляет пункт с общей Texture2D, подписью и ID. Автоматический ID зависит от индекса при создании; первая доступная строка выбирается без сигнала.
labelДобавляет пункт с общей Texture2D, подписью и ID. Автоматический ID зависит от индекса при создании; первая доступная строка выбирается без сигнала.
idID пункта. При добавлении -1 выбирает индекс при создании; при поиске задайте сохранённый уникальный ID.
AddItemvoid
public void AddItem(string label, int id = -1);Добавляет обычный пункт с подписью и ID. id = -1 использует индекс при создании. Первый доступный пункт выбирается без ItemSelected; индекс и ID не обязаны совпадать.
| Имя | Тип | По умолчанию |
|---|---|---|
label | string | — |
id | int | -1 |
labelДобавляет обычный пункт с подписью и ID. id = -1 использует индекс при создании. Первый доступный пункт выбирается без ItemSelected; индекс и ID не обязаны совпадать.
idID пункта. При добавлении -1 выбирает индекс при создании; при поиске задайте сохранённый уникальный ID.
AddSeparatorvoid
public void AddSeparator(string text = "");Добавляет строку-разделитель с необязательной подписью. Увеличивает ItemCount и сдвигает нумерацию следующих строк; не является обычным доступным пунктом.
| Имя | Тип | По умолчанию |
|---|---|---|
text | string | "" |
textДобавляет строку-разделитель с необязательной подписью. Увеличивает ItemCount и сдвигает нумерацию следующих строк; не является обычным доступным пунктом.
Clearvoid
public void Clear();Удаляет все строки, очищает подпись/иконку и ставит Selected = -1. Не испускает ItemSelected.
GetAllowReselectbool
public bool GetAllowReselect();Разрешает повторный ItemSelected при выборе той же строки через меню, false по умолчанию. Не заставляет Select испускать сигнал.
booltrue, если повторный выбор в меню может повторить ItemSelected.
GetItemAutoTranslateModeEntity.AutoTranslateModeEnum
public Entity.AutoTranslateModeEnum GetItemAutoTranslateMode(int idx);Режим перевода подписи пункта: Inherit, Always или Disabled. Изменение выбранной строки обновляет её отображение. Не переводит ID/metadata.
| Имя | Тип | По умолчанию |
|---|---|---|
idx | int | — |
idxИндекс строки с нуля, не ID; для Select -1 очищает выбор. Для остальных изменений используйте существующий неотрицательный индекс.
Entity.AutoTranslateModeEnumСохранённый Entity.AutoTranslateModeEnum пункта.
GetItemCountint
public int GetItemCount();Число всех строк, включая разделители. Setter создаёт пустые строки или удаляет хвост; count должен быть неотрицательным. Первое изменение после runtime-добавления может сбросить текущий индекс: после изменения вызовите Select явно.
intЧисло всех строк, включая разделители.
GetItemIconTexture2D
public Texture2D GetItemIcon(int idx);Общая Texture2D строки либо null; setter выбранной строки обновляет иконку закрытой кнопки.
| Имя | Тип | По умолчанию |
|---|---|---|
idx | int | — |
idxИндекс строки с нуля, не ID; для Select -1 очищает выбор. Для остальных изменений используйте существующий неотрицательный индекс.
Texture2DОбщая Texture2D строки либо null.
GetItemIdint
public int GetItemId(int idx);Возвращает назначенный ID строки. Для idx = -1 возвращает -1 как отсутствие выбора, а не ID последней строки.
| Имя | Тип | По умолчанию |
|---|---|---|
idx | int | — |
idxИндекс строки с нуля, не ID; для Select -1 очищает выбор. Для остальных изменений используйте существующий неотрицательный индекс.
intНазначенный ID, не индекс строки.
GetItemIndexint
public int GetItemIndex(int id);Ищет первую строку с данным ID; возвращает индекс либо -1. ID не проверяются на уникальность, поэтому задавайте уникальные прикладные ключи самостоятельно.
| Имя | Тип | По умолчанию |
|---|---|---|
id | int | — |
idID пункта. При добавлении -1 выбирает индекс при создании; при поиске задайте сохранённый уникальный ID.
intИндекс первого совпадения ID либо -1.
GetItemMetadataVariant
public Variant GetItemMetadata(int idx);Прикладные данные Variant, независимые от подписи и ID. Изменяемые ресурсы/контейнеры могут оставаться общими.
| Имя | Тип | По умолчанию |
|---|---|---|
idx | int | — |
idxИндекс строки с нуля, не ID; для Select -1 очищает выбор. Для остальных изменений используйте существующий неотрицательный индекс.
VariantПрикладной Variant строки.
GetItemTextstring
public string GetItemText(int idx);Исходная подпись строки; setter выбранной строки обновляет закрытую кнопку. Перевод задаётся режимом пункта.
| Имя | Тип | По умолчанию |
|---|---|---|
idx | int | — |
idxИндекс строки с нуля, не ID; для Select -1 очищает выбор. Для остальных изменений используйте существующий неотрицательный индекс.
stringИсходная подпись строки.
GetItemTooltipstring
public string GetItemTooltip(int idx);Текст подсказки строки в меню. Не является подписью выбранной кнопки или данными выбора.
| Имя | Тип | По умолчанию |
|---|---|---|
idx | int | — |
idxИндекс строки с нуля, не ID; для Select -1 очищает выбор. Для остальных изменений используйте существующий неотрицательный индекс.
stringСохранённый текст подсказки строки.
GetPopupPopupMenu
public PopupMenu GetPopup();Возвращает общий внутренний PopupMenu. Не освобождайте и не переносите. Редактируйте строки методами OptionButton для согласованности подписи, выбора и кэша.
PopupMenuОбщий внутренний PopupMenu, которым владеет кнопка.
GetSearchBarFuzzySearchMaxMissesint
public int GetSearchBarFuzzySearchMaxMisses();Неотрицательное максимальное число пропусков fuzzy-поиска, 2 по умолчанию. Не означает число видимых результатов.
intСохранённое значение SearchBarFuzzySearchMaxMisses.
GetSearchBarMinItemCountint
public int GetSearchBarMinItemCount();Неотрицательный порог показа поиска по числу строк без разделителей, 0 по умолчанию. Учитывается при включённом SearchBarEnabled.
intСохранённое значение SearchBarMinItemCount.
GetSelectableItemint
public int GetSelectableItem(bool fromLast = false);Ищет первый либо последний индекс, исключая disabled и separator. Возвращает -1 при отсутствии. Не выбирает строку и не возвращает ID.
| Имя | Тип | По умолчанию |
|---|---|---|
fromLast | bool | false |
fromLastfalse — первый доступный индекс, true — последний.
intПервый/последний доступный индекс либо -1.
GetSelectedint
public int GetSelected();Текущий индекс строки, -1 при отсутствии выбора. Setter/Select не испускают ItemSelected и могут выбрать отключённый пункт или разделитель. После структурных изменений явно восстановите выбор по стабильному ID.
intТекущий индекс либо -1; после удаления более ранней строки может быть устаревшим.
GetSelectedIdint
public int GetSelectedId();Возвращает ID текущей строки или -1 без выбора. После удаления более ранней строки сначала восстановите валидный индекс; не используйте устаревший Selected.
intНазначенный ID выбранной строки либо -1 без выбора.
GetSelectedMetadataVariant
public Variant GetSelectedMetadata();Возвращает данные текущей строки либо Variant Nil без выбора. При потенциально устаревшем Selected после изменения списка сначала явно восстановите выбор.
VariantVariant выбранной строки либо Nil без выбора.
HasSelectableItemsbool
public bool HasSelectableItems();Есть хотя бы одна строка, которая не disabled и не separator. Это не проверка валидности текущего Selected.
booltrue, если есть хотя бы один доступный неразделительный пункт.
IsFitToLongestItembool
public bool IsFitToLongestItem();Размер закрытой кнопки учитывает все пункты и ширину меню, true по умолчанию. Кэш обновляется отложенно; false использует текущую подпись/иконку и может менять ширину при выборе.
booltrue, если минимум учитывает все пункты/меню.
IsItemDisabledbool
public bool IsItemDisabled(int idx);Запрет пользовательского выбора строки. Не очищает существующий выбор и не запрещает программный Select этого индекса.
| Имя | Тип | По умолчанию |
|---|---|---|
idx | int | — |
idxИндекс строки с нуля, не ID; для Select -1 очищает выбор. Для остальных изменений используйте существующий неотрицательный индекс.
booltrue, если строка запрещена для пользовательского выбора.
IsItemSeparatorbool
public bool IsItemSeparator(int idx);Проверяет, является ли строка разделителем. Разделители входят в ItemCount и индексы, но пропускаются GetSelectableItem.
| Имя | Тип | По умолчанию |
|---|---|---|
idx | int | — |
idxИндекс строки с нуля, не ID; для Select -1 очищает выбор. Для остальных изменений используйте существующий неотрицательный индекс.
booltrue для строки-разделителя.
IsSearchBarEnabledbool
public bool IsSearchBarEnabled();Включает поле поиска меню, false по умолчанию. Видимость также зависит от SearchBarMinItemCount; не заменяет выбор и не меняет ID.
boolСохранённое значение SearchBarEnabled.
IsSearchBarFuzzySearchEnabledbool
public bool IsSearchBarFuzzySearchEnabled();Поиск с допускаемыми пропусками, true по умолчанию. Сам по себе не включает поле поиска; число пропусков задаётся отдельно.
boolСохранённое значение SearchBarFuzzySearchEnabled.
RemoveItemvoid
public void RemoveItem(int idx);Удаляет строку по индексу. Удаление выбранной очищает выбор. Удаление перед выбранной в текущей реализации не уменьшает сохранённый индекс; сохраните ID заранее и восстановите Select(GetItemIndex(id)) после проверки результата.
| Имя | Тип | По умолчанию |
|---|---|---|
idx | int | — |
idxИндекс строки с нуля, не ID; для Select -1 очищает выбор. Для остальных изменений используйте существующий неотрицательный индекс.
Selectvoid
public void Select(int idx);Выбирает существующий индекс строки без ItemSelected; -1 очищает выбор. Не передавайте сюда ID. Метод не исключает disabled/separator и не исправляет модель приложения автоматически.
| Имя | Тип | По умолчанию |
|---|---|---|
idx | int | — |
idxИндекс строки с нуля, не ID; для Select -1 очищает выбор. Для остальных изменений используйте существующий неотрицательный индекс.
SetAllowReselectvoid
public void SetAllowReselect(bool allow);Разрешает повторный ItemSelected при выборе той же строки через меню, false по умолчанию. Не заставляет Select испускать сигнал.
| Имя | Тип | По умолчанию |
|---|---|---|
allow | bool | — |
allowРазрешает повторный ItemSelected при выборе той же строки через меню, false по умолчанию. Не заставляет Select испускать сигнал.
SetDisableShortcutsvoid
public void SetDisableShortcuts(bool disabled);Отключает локальную обработку сочетаний списка и унаследованной кнопки. Не меняет InputMap приложения и не отключает обычные Select/методы списка.
| Имя | Тип | По умолчанию |
|---|---|---|
disabled | bool | — |
disabledОтключает локальную обработку сочетаний списка и унаследованной кнопки. Не меняет InputMap приложения и не отключает обычные Select/методы списка.
SetFitToLongestItemvoid
public void SetFitToLongestItem(bool fit);Размер закрытой кнопки учитывает все пункты и ширину меню, true по умолчанию. Кэш обновляется отложенно; false использует текущую подпись/иконку и может менять ширину при выборе.
| Имя | Тип | По умолчанию |
|---|---|---|
fit | bool | — |
fitРазмер закрытой кнопки учитывает все пункты и ширину меню, true по умолчанию. Кэш обновляется отложенно; false использует текущую подпись/иконку и может менять ширину при выборе.
SetItemAutoTranslateModevoid
public void SetItemAutoTranslateMode(int idx, Entity.AutoTranslateModeEnum mode);Режим перевода подписи пункта: Inherit, Always или Disabled. Изменение выбранной строки обновляет её отображение. Не переводит ID/metadata.
| Имя | Тип | По умолчанию |
|---|---|---|
idx | int | — |
mode | Entity.AutoTranslateModeEnum | — |
idxИндекс строки с нуля, не ID; для Select -1 очищает выбор. Для остальных изменений используйте существующий неотрицательный индекс.
modeРежим перевода подписи пункта: Inherit, Always или Disabled. Изменение выбранной строки обновляет её отображение. Не переводит ID/metadata.
SetItemCountvoid
public void SetItemCount(int count);Число всех строк, включая разделители. Setter создаёт пустые строки или удаляет хвост; count должен быть неотрицательным. Первое изменение после runtime-добавления может сбросить текущий индекс: после изменения вызовите Select явно.
| Имя | Тип | По умолчанию |
|---|---|---|
count | int | — |
countЧисло всех строк, включая разделители. Setter создаёт пустые строки или удаляет хвост; count должен быть неотрицательным. Первое изменение после runtime-добавления может сбросить текущий индекс: после изменения вызовите Select явно.
SetItemDisabledvoid
public void SetItemDisabled(int idx, bool disabled);Запрет пользовательского выбора строки. Не очищает существующий выбор и не запрещает программный Select этого индекса.
| Имя | Тип | По умолчанию |
|---|---|---|
idx | int | — |
disabled | bool | — |
idxИндекс строки с нуля, не ID; для Select -1 очищает выбор. Для остальных изменений используйте существующий неотрицательный индекс.
disabledЗапрет пользовательского выбора строки. Не очищает существующий выбор и не запрещает программный Select этого индекса.
SetItemIconvoid
public void SetItemIcon(int idx, Texture2D texture);Общая Texture2D строки либо null; setter выбранной строки обновляет иконку закрытой кнопки.
| Имя | Тип | По умолчанию |
|---|---|---|
idx | int | — |
texture | Texture2D | — |
idxИндекс строки с нуля, не ID; для Select -1 очищает выбор. Для остальных изменений используйте существующий неотрицательный индекс.
textureОбщая Texture2D строки либо null; setter выбранной строки обновляет иконку закрытой кнопки.
SetItemIdvoid
public void SetItemId(int idx, int id);Задаёт ID существующей строки без изменения индекса. Уникальность не проверяется; избегайте одинаковых ID.
| Имя | Тип | По умолчанию |
|---|---|---|
idx | int | — |
id | int | — |
idxИндекс строки с нуля, не ID; для Select -1 очищает выбор. Для остальных изменений используйте существующий неотрицательный индекс.
idID пункта. При добавлении -1 выбирает индекс при создании; при поиске задайте сохранённый уникальный ID.
SetItemMetadatavoid
public void SetItemMetadata(int idx, Variant metadata);Прикладные данные Variant, независимые от подписи и ID. Изменяемые ресурсы/контейнеры могут оставаться общими.
| Имя | Тип | По умолчанию |
|---|---|---|
idx | int | — |
metadata | Variant | — |
idxИндекс строки с нуля, не ID; для Select -1 очищает выбор. Для остальных изменений используйте существующий неотрицательный индекс.
metadataПрикладные данные Variant, независимые от подписи и ID. Изменяемые ресурсы/контейнеры могут оставаться общими.
SetItemTextvoid
public void SetItemText(int idx, string text);Исходная подпись строки; setter выбранной строки обновляет закрытую кнопку. Перевод задаётся режимом пункта.
| Имя | Тип | По умолчанию |
|---|---|---|
idx | int | — |
text | string | — |
idxИндекс строки с нуля, не ID; для Select -1 очищает выбор. Для остальных изменений используйте существующий неотрицательный индекс.
textИсходная подпись строки; setter выбранной строки обновляет закрытую кнопку. Перевод задаётся режимом пункта.
SetItemTooltipvoid
public void SetItemTooltip(int idx, string tooltip);Текст подсказки строки в меню. Не является подписью выбранной кнопки или данными выбора.
| Имя | Тип | По умолчанию |
|---|---|---|
idx | int | — |
tooltip | string | — |
idxИндекс строки с нуля, не ID; для Select -1 очищает выбор. Для остальных изменений используйте существующий неотрицательный индекс.
tooltipТекст подсказки строки в меню. Не является подписью выбранной кнопки или данными выбора.
SetSearchBarEnabledvoid
public void SetSearchBarEnabled(bool enabled);Включает поле поиска меню, false по умолчанию. Видимость также зависит от SearchBarMinItemCount; не заменяет выбор и не меняет ID.
| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
enabledВключает поле поиска меню, false по умолчанию. Видимость также зависит от SearchBarMinItemCount; не заменяет выбор и не меняет ID.
SetSearchBarFuzzySearchEnabledvoid
public void SetSearchBarFuzzySearchEnabled(bool enabled);Поиск с допускаемыми пропусками, true по умолчанию. Сам по себе не включает поле поиска; число пропусков задаётся отдельно.
| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
enabledПоиск с допускаемыми пропусками, true по умолчанию. Сам по себе не включает поле поиска; число пропусков задаётся отдельно.
SetSearchBarFuzzySearchMaxMissesvoid
public void SetSearchBarFuzzySearchMaxMisses(int maxMisses);Неотрицательное максимальное число пропусков fuzzy-поиска, 2 по умолчанию. Не означает число видимых результатов.
| Имя | Тип | По умолчанию |
|---|---|---|
maxMisses | int | — |
maxMissesНеотрицательное максимальное число пропусков fuzzy-поиска, 2 по умолчанию. Не означает число видимых результатов.
SetSearchBarMinItemCountvoid
public void SetSearchBarMinItemCount(int count);Неотрицательный порог показа поиска по числу строк без разделителей, 0 по умолчанию. Учитывается при включённом SearchBarEnabled.
| Имя | Тип | По умолчанию |
|---|---|---|
count | int | — |
countНеотрицательный порог показа поиска по числу строк без разделителей, 0 по умолчанию. Учитывается при включённом SearchBarEnabled.
ShowPopupvoid
public void ShowPopup();Открывает список при наличии Viewport. Не равно Select и не подтверждает пункт. Прямой вызов не использует проверку Disabled из Press; вызывайте для активной кнопки в дереве.
Сигналы и события2
ItemFocusedСобытие
public event OptionButton.ItemFocusedEventHandler ItemFocused;Индекс подсвеченной строки, long в C#. Не подтверждает выбор и не обязан совпадать с Selected.
| Имя | Тип | По умолчанию |
|---|---|---|
index | long | — |
indexИндекс строки с нуля, long в C# сигнале, не ID.
ItemSelectedСобытие
public event OptionButton.ItemSelectedEventHandler ItemSelected;Индекс выбранной через меню строки, long в C#. Это не ID. Select и автоматический выбор при добавлении сигнал не испускают; AllowReselect управляет повторным выбором того же пункта.
| Имя | Тип | По умолчанию |
|---|---|---|
index | long | — |
indexИндекс строки с нуля, long в C# сигнале, не ID.
Свойства темы
Это ключи ресурсов Theme, а не свойства C# класса. Используйте методы GetTheme…() и AddTheme…Override() у Control с соответствующим типом значения.
| Ключ и тип | Описание |
|---|---|
arrow_marginint | Горизонтальное пространство между значком стрелки и правым краем кнопки. По умолчанию:4 |
modulate_arrowint | Если значение отличается от Стрела По умолчанию:0 |
arrowTexture2D | Значок стрелки, который будет нарисован на правом конце кнопки. |