top of page

День, коли наші шейдери зникли зі збірки

Фото автора: Marcel Dütscher
Marcel Dütscher
27 черв.
Читати 1 хв

У редакторі Unity усе виглядало ідеально. У готовій збірці — рожеві поверхні й зниклі ефекти. Ласкаво просимо до однієї з найпідступніших пасток Unity — і кількох її родичів.


Шейдерний stripping. Під час збірки Unity викидає все, що, схоже, не потрібне, — зокрема й шейдери. Проблема: якщо завантажувати шейдери під час роботи через Shader.Find() (як це робимо ми для понад 20 власних шейдерів води, атмосфери, голограм та інших), Unity не бачить жодного посилання на них у жодній сцені. Результат: шейдер є в редакторі й зникає у збірці. Рішення непримітне, але обов'язкове: кожен із цих шейдерів треба додати до списку Always Included Shaders у налаштуваннях графіки. Відтоді в нас правило: новий шейдер? Додай одразу.


Шар, що був -1. Схожа категорія: ми визначали фізичний шар у коді за його назвою. У редакторі — працює. У пакетній збірці на сервері збірки: шару не існує, пошук повертає -1, і все, що базується на цьому шарі, мовчки поводиться неправильно. Відтоді ми посилаємося на шари за їхнім фіксованим індексом, а не за назвою.


Мораль: редактор Unity і готова збірка — це два різні світи. Редактор поблажливий — під рукою всі ресурси, усі назви, усі шейдери. Збірка безжальна. Тому в нас кожна зміна клієнта супроводжується справжнім локальним тестом збірки, а не лише кнопкою Play в редакторі. Це триваліше. Але це вже врятувало нас від багатьох прикрих релізів.

Останні пости

Дивитися всі
Чому нова версія називається 2026.7.19, а не 0.9.2 🗓️

Хто оновлюється сьогодні, перестрибує з версії 0.9.1 на 2026.7.19. Це схоже на помилку друку, але це навмисне рішення: ми змінили схему версіонування, від «семантичних» версій до версій за датою (рік.

 
 

Коментарі


Коментування цього посту більше не доступне. Зверніться до власника сайту, щоб дізнатися більше.
bottom of page