Решили: сорок семь grayscale-текстур UI переименованы по схеме {Роль}_{Мотив}, где роль
совпадает с папкой (Backdrops · Banners · Frames · Plates · Masks), а мотив называет
рисунок словом, а не номером: Frame_Filigree, Plate_Feather, Mask_Glow_Wide. Инвентарь
пачки генерируется скриптом scripts/gen_texture_inventory.py в
Reference - UI Texture Inventory.
Почему: имя файла — это и есть адрес текстуры, потому что USS ссылается на неё путём через
url() и никакого id не понимает. SO-каталог наподобие AudioCatalog работал бы только для C#,
а UI пойдёт через USS — заводить его сейчас значило бы положить шов под пустоту. Отсюда
и требование к имени: оно должно позволять ВЫБРАТЬ текстуру, не открывая её. Номерная схема
(Frame_Ornate_01..10) отвергнута именно поэтому — по ней выбор идёт перебором.
Прежние имена приходили от генератора (ChatGPT Image 23 авг. 2026 г., 12_41_24 (11).png):
кириллица, запятые и пробелы в пути, сортировка, где (10) стоит перед (9).
Инвентарь генерируется, а не пишется руками, по причине из
Journal - Code Owns Truth:
рукописный список файлов отстаёт от диска за неделю. Прецедент — audio-inventory.
Сказано: «Также переименуешь их корректно? Чтобы норм назывались понятно и в одном стиле. Также стоит поменять название абстрактной текстурки. А то зачем-то ты поменяла её отдельно от других» (23.08.2026, сессия 3dfc278f). Про место конспекта — «Возможно даже не в документации коспектировать а прямо в ассетах юнити, хз как лучше?»; выбран маршрут «инвентарь скриптом плюс запись в журнал», в ассеты не пишется ничего.
Грабли:
MenuBackdrop_Light.pngбыл не отдельно названной текстурой, а КОПИЕЙ. Замер разницы сBackground ver 5(нынеBackdrop_Facets) — 0.13 из 255, то есть тот же кадр, отмасштабированный в 1920x1080 и с бесполезной альфой 201–255. Ссылок по GUID на него не было: задник меты берёт материал изMapStyle, а не текстуру напрямую. Файл удалён.- Прозрачности нет ни у одного файла пачки. Шахматка на рамках и пластинах нарисована
пикселями — так генератор изображает прозрачный фон, которого не отдаёт. Замер: верхний ряд у
всех
FramesиPlates— тона 233–253. Пока белое поле не вырезано в альфу, класть эти текстуры поверх фона нельзя. - Серые они не полностью: разброс каналов до 19 (
Backdrop_Ridges). При тонировании через-unity-background-image-tint-colorэто даёт паразитный оттенок. - Размеры произвольные и не кратны 4 (2035x773, 1942x809): Unity не сожмёт такие в BC/DXT и положит в RGBA32.
- Спор про 9-slice для
Platesзакрыт в пользу 9-slice. Довод против («орнаментальные концы плывут от длины слова») был замером ПРОСТОЙ растяжки, а не 9-slice — у него концы уходят в углы и не тянутся вовсе, то есть ровно это и чинится. Настоящая цена другая и она мелкая: рельеф запечён вместе с цветом, поэтому:hoverможно только тинтовать целиком, а «светится только кромка» на растре не сделать. - Переименование шло через
AssetDatabase.RenameAssetпри живом редакторе — правка.metaна диске здесь потеряла бы GUID.execute_codeблокируетAssetDatabase.DeleteAssetпроверкой безопасности, нуженsafety_checks=false.
Владелец правды: сами файлы в Assets/_Project/Art/Textures (Grayscale), таблица —
scripts/gen_texture_inventory.py, форма кнопки — Assets/_Project/Scripts/UI/Components/PlateButton.cs.