Найти в Дзене
47 подписчиков

А давайте поговорим про баги Unity


Чёт много чего я находил за этот месяц. И вот что я придумал. Напишите в комментах самый забавный/запомнившийся баг/неочевидность, который вы встречали в Unity. Он может быть уже не актуальным, может в какой-то древней версии Unity и так далее. Просто что-то, что прям запомнилось. Соберём так сказать коллекцию боли. Я начну (но можно не так красочно, это по желанию):

Когда-то давно я работал в KamaGames. Мне кажется где-то в 2016-2017 году. Собственно был я сеньором Unity, и в какой-то момент мне попалась забавная задача. У нас в какие-то неопределённые моменты времени ломались текстурные атласы шрифтов. Я помню, что там были динамические атласы. То есть когда какой-то символ требуется, он добавляется в атлас и так далее. Они ломались так, что получалась абракадабра непонятно почему. Я 1.5 недели копался. По сути в какой-то момент я удалил почти весь код игры дебажа, чтобы сделать минимальный кейс воспроизведения. Я определил, что бага не на нашей стороне, а то что она где-то в движке. Но чёткий репродьюс без кода игры я так и не понял. Мне сказали, так не пойдёт, нужно понять суть. Ну, а в таких случаях начинаешь перебирать варианты "чем мой пустой проект и игра отличаются". Я долго мучался, считал себя идиотом, меня прям тогда чуть самозванцем не перекрыло. Так как я же сеньор, и не могу просто понять в чём баг. И я уже почти отчаялся. И вдруг мне в голову пришла какая-то идея. Какая конкретно не помню, но вот в чём заключался баг.

В Unity был такой баг с динамическими шрифтами. Вы же все знаете, что имея ссылку в сцене на префаб, то он грузится при загрузке сцены. Как и все его ассеты вроде картинок, звуков, 3д и текстов. Динамические шрифты работали примерно так же. То есть если у вас в сцене есть ссылка на префаб с текстом, то в атлас добавляются символы из этого префаба. Хотя в сцене его нет. И казалось бы, вот подвох. Но если в сцене была просто ссылка на префаб — бага не было. Это вообще была моя первая мысль. Что дело в этом, когда я расследовал. Так как я знал одно "почему-то не вызывается событие атлас перестроился". Не понимал в каком случае, но это я знал. Так вот, оказалось, что если в сцене есть ссылка на префаб в котором есть ссылка на другой префаб с текстом. То именно в этом случае не вызывается событие что "атлас перестроился". А так как оно не вызывалось, то в текстовых полях не пересчитывались UV и получалась абракадабра.

И если когда я это разгадывал 2 недели я считал, что я просто последний дурак, который в движке не разбирается. То когда разгадал я чувствовал себя просто гением. Поэтому этот баг я не забуду никогда XD

#интересное
2 минуты