我正在尝试在Unity中构建弯曲的网格。这个想法是将所有GameObject放在一个球体上,并从内部显示该球体。
我做到了,相机在画布上生成的渲染纹理(1500 * 1500)毫无问题。它按预期工作。
但是,您可以猜测,由于创建渲染纹理的画布是处理事件的对象,而不是纹理本身,因此事件无法正常工作。
为解决此问题,我创建了一个脚本,该脚本可将球面中的坐标转换为画布中的坐标,并使用光线投射器将事件发送到正确的GameObject。
eventSystem.RaycastAll(computedPosition, raycastList);
var raycast = FindFirstRaycast(raycastList);
此代码使我可以将事件传播到画布上的GameObject。而且效果很好。
在编辑器中启动游戏时,所有功能都可以完全按照我的要求运行。但是,我不明白为什么,当我构建项目并启动游戏时,它不起作用。
我对内置游戏和编辑器中的游戏进行了一些比较:
当我说“不起作用”时,是指该功能
eventSystem.RaycastAll(computedEvent, raycastList);
返回一个空列表。光线投射能够在编辑器模式下找到它,而在构建模式下却找不到它。
我的第一个猜测是,如果看起来无用,统一会从屏幕上删除元素以进行优化。但这似乎并非如此。
我的问题是为什么会有不同的行为?我错过了什么?我认为1080值非常重要,但是我找不到与它的任何关系。