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 довольно важно, но я не могу найти с ним никаких отношений.

0 ответов

Другие вопросы по тегам