Решили: правку темы считать доехавшей только после ЗАМЕРА резолва в живой панели, а не после успешного импорта: USS с битым комментарием импортируется без единой ошибки в консоли и молча роняет весь ярус переменных.
Почему: отладка шла по ложному следу «сломался парсер» — а парсер был цел (rules=1,
properties=119, m_ImportedWithErrors=False), мёртв был только резолв var() у одного из трёх
ярусов. Отличить одно от другого можно ровно одним способом — прочитать resolvedStyle конкретного
элемента и сравнить с ожидаемым значением токена. Альтернатива «посмотреть, нет ли ошибок в
консоли» отвергнута: она даёт зелёный свет на сломанной теме.
Грабли: две штуки, обе стоили времени.
- Комментарий, записанный как
\* … */вместо/* … */, — следствие того, что Read и Grep отображают начало USS-комментария со слешем-бэкслешем, и эта форма ушла вEditкак есть. Ошибок импорта нет; ломается ярус целиком, начиная с этой строки. Симптом на экране — дефолтные цвета и гарнитуры при живых размерах: размеры пришли изtokens.primitives.uss(прямые значения), а цвета и шрифты — изtokens.semantic.uss, который и умер. - Починка файла НЕ доезжает до панели сама. Тема приходит в
UIDocumentне черезstyleSheets, а черезPanelSettings.themeStyleSheet→GuildmasterRuntimeTheme.tss→@import url("theme.uss"). Эта цепочка кэшируется: не помогли ниAssetDatabase.Refresh, ниImportAsset(ForceUpdate | ForceSynchronousImport)по всем пяти файлам, ни выход-вход в play. ПомоглоrootVisualElement.styleSheets.Add(theme.uss)в живой сессии — это и лечение на месте, и способ проверить, что в самом USS всё исправно.
Отсюда практическое правило для сессии подбора UI: сломав тему, не гадай по консоли — добавь
theme.uss на корень документа и померь резолв. Ответ приходит за один вызов.
Владелец правды: Assets/_Project/UI/Theme/GuildmasterRuntimeTheme.tss (цепочка импорта),
Assets/_Project/UI/Theme/theme.uss (порядок ярусов).