Найти тему
47 подписчиков

Загадка Order in Layer


Unity иногда поражает своими решениями. Особенно их очевидностью. Вот вы знаете какое максимальное значение у sortingOrder в SpriteRenderer? Ну наверное если работаете с 2д много то знаете. Но вот почему так - загадка. А давайте попробуем угадать?

Сначала сходим в документацию. Там ничего не сказано. Ну ладно, документация нужна только трусам. У нас же есть код, а код лучшая документация. Посмотрим тип sortingOrder в коде. Ну вроде бы int. Следовательно по идее значение должно быть равно int.MaxValue - 2 147 483 647? Ведь так Unity? Так? *тут должна быть ухмылка Энакина, но в текст в телеграме нельзя вставить картинку*

Не, опять не угадал. Максимальное значение равно - 32767. То есть short.MaxValue. Почему при этом sortingOrder у нас типа int, а не short? Ну видимо во славу сатаны. А я потратил 5 минут лишних на задачу и ещё на пост чутка времени, чтобы узнать почему при драге sortingOrder = int.MaxValue ставит -1 в значение порядка сортировки объекта. Я считаю и обработка больших значений божественная, и документация идеальная, и код очень логичный. Уже за 12 лет работы с этим движком удивлять он всё так же не перестаёт.

UPD: Перепроверил. Ладно, это не написано в мануале по спрайт рендереру и в апи спрайт рендерера. Но если зайти прям в пропертю в апи спрайт рендерера, то там это написано. Ну как обычно, чтобы докопаться до истины нужно постараться.

#оработе
1 минута