Решили: ввод dev-консоли всегда переводится в латиницу по позиции клавиши
(KeyboardLayoutMap), независимо от раскладки ОС — решение Макса 31.07. Переводится вся строка,
включая содержимое кавычек.
Почему: имена команд латинские, переключать раскладку системы игра не может, а требовать этого от
разработчика — терять секунду на каждом вызове. Маппинг позиционный, а не фонетический: человек
нажал клавишу G, система нарисовала «п» — значит вернуть надо g, хотя «по звуку» правильным
казался бы p. Переводить только вне кавычек отвергнуто: предсказуемое правило дороже гибкости,
консоль набирают на автомате.
Грабли:
.и,обязаны остаться вне таблицы раскладки. Позиционно им соответствуют/и?, и с ними в таблице0.35превращалось в0/35— то есть ломался десятичный разделитель, ради которого аргументы и парсятся в инвариантной культуре. Поймал тестLayout_LatinAndDigitsPassThrough; без него дефект жил бы до первой дробной команды в бою.- Тема Unity клипит содержимое
TextFieldпо рамке input’а. При высоте ровно по строке первыми срезаются элементы ниже базовой линии: хвосты «g» и «p», подчёркивания вgm_sep_radius. Лечитсяoverflow: visibleна input и его текст-элементе плюс нижний padding. На общем скрине 1920×1080 это читается как «шрифт странноватый», а не как обрезка — диагноз дал увеличенный вырез области ввода (crop×3 из того же PNG). Приём стоит держать в руках: сомневаешься в пикселях — режь и увеличивай, а не гадай по стилю. ScrollView.ScrollToдо привязки к панели бросает NRE (внутри спрашивает панель, можно ли скроллить). Экран наполняет вывод вBuild, то есть ДО того, как навигатор добавит корень в слой — прокрутка обязана откладываться доAttachToPanelEventи идти черезschedule, иначе на самом аттаче геометрия ещё не посчитана и скролл уходит в ноль.- Ghost-подсказка печатает только хвост, отодвинутый пробелами. Целая дополненная строка под полем давала наложение двух текстов — символы совпадали, и ввод выглядел полужирным.
- Потолок высоты у палитры держал скроллбар при четырёх совпадениях из четырёх (контент выше
max-heightна несколько пикселей). Полоса читается как «есть что-то ещё», хотя видно всё; ограничивать надо число строк, а не высоту.
Владелец правды: Assets/_Project/Scripts/Core/DevConsole/KeyboardLayoutMap.cs,
Assets/_Project/Scripts/UI/DevConsole/DevConsoleScreen.cs, секция .gm-console* в
Assets/_Project/UI/Theme/components.uss; тесты DevConsoleRegistryTests (раздел «Раскладка»).