Unity raycast с различным поведением между редактором и сборкой
Я пытаюсь построить изогнутую сетку в Unity. Идея состоит в том, чтобы поместить весь GameObject на сферу и показать сферу изнутри.
Я сделал это без проблем с текстурой рендера (1500*1500), сгенерированной камерой на холсте. Работает как положено.
Однако, как вы можете догадаться, события не работают, поскольку холст, создающий текстуру рендеринга, обрабатывает события, а не саму текстуру.
Чтобы решить эту проблему, я создал скрипт, который переводит координаты сферы в координаты на холсте и отправляет событие нужному GameObject с помощью raycaster.
eventSystem.RaycastAll(computedPosition, raycastList);
var raycast = FindFirstRaycast(raycastList);
Этот код позволяет мне распространять событие на GameObject на холсте. И это работает отлично.
Все работает именно так, как я хочу, когда я запускаю игру в редакторе. Но я не могу понять, почему, когда я строю проект и запускаю игру, он не работает.
Я сделал несколько сравнений между встроенной игрой и игрой в редакторе:
- Положения всех компонентов одинаковы
- Вычисленные позиции на холсте одинаковы, независимо от разрешения
- Во встроенной игре все компоненты с вычисленным значением Y выше 1080 работают нормально
- В встроенной игре все компоненты с вычисленным значением Y ниже 1080 не работают
Когда я говорю "не работает", я имею в виду, что эта функция
eventSystem.RaycastAll(computedEvent, raycastList);
возвращает пустой список. Raycast не может найти какой-либо игровой объект в режиме сборки, хотя он мог это сделать в режиме редактора.
Мое первое предположение было, что единство удаляет элементы с экрана, если они выглядят бесполезными, для оптимизации. Но, похоже, это не так.
Мой вопрос: почему существует другое поведение? Я что-то пропустил? Я полагаю, значение 1080 довольно важно, но я не могу найти с ним никаких отношений.