Unity raycast在编辑器和内部版本之间具有不同的行为

时间:2018-07-12 03:41:18

标签: c# unity3d raycasting behaviorsubject

我正在尝试在Unity中构建弯曲的网格。这个想法是将所有GameObject放在一个球体上,并从内部显示该球体。

我做到了,相机在画布上生成的渲染纹理(1500 * 1500)毫无问题。它按预期工作。

但是,您可以猜测,由于创建渲染纹理的画布是处理事件的对象,而不是纹理本身,因此事件无法正常工作。

为解决此问题,我创建了一个脚本,该脚本可将球面中的坐标转换为画布中的坐标,并使用光线投射器将事件发送到正确的GameObject。

eventSystem.RaycastAll(computedPosition, raycastList);
var raycast = FindFirstRaycast(raycastList);

此代码使我可以将事件传播到画布上的GameObject。而且效果很好。

在编辑器中启动游戏时,所有功能都可以完全按照我的要求运行。但是,我不明白为什么,当我构建项目并启动游戏时,它不起作用。

我对内置游戏和编辑器中的游戏进行了一些比较:

  • 所有组件的位置完全相同
  • 无论分辨率如何,画布上计算的位置都是相同的
  • 在内置游戏中,所有计算出的Y值高于1080的组件都可以正常工作
  • 在内置游戏中,所有计算出的Y值低于1080的组件均不起作用

当我说“不起作用”时,是指该功能

eventSystem.RaycastAll(computedEvent, raycastList);

返回一个空列表。光线投射能够在编辑器模式下找到它,而在构建模式下却找不到它。

我的第一个猜测是,如果看起来无用,统一会从屏幕上删除元素以进行优化。但这似乎并非如此。

我的问题是为什么会有不同的行为?我错过了什么?我认为1080值非常重要,但是我找不到与它的任何关系。

0 个答案:

没有答案