具有rendertexture的Unity 4.6 GUI用于升级 - 错误位置的事件

时间:2014-12-17 16:56:05

标签: user-interface unity3d

我正在尝试使用新的4.6 Unity GUI系统来创建一些UI。我想以400x300的分辨率制作这个UI,然后渲染到一个纹理,然后以800x600的分辨率(因此双倍分辨率)将其绘制到屏幕上。问题是:它不起作用。渲染是可以的,我可以正确地升级渲染纹理并将其绘制到屏幕上,但UI事件没有收到正确的位置,我找不到解决这个问题的方法。

所以:

  • 播放器分辨率为800x600渲染纹理分辨率为400x300
  • 主摄像头,称为“UI摄像头”渲染到此纹理(400x300)
  • 画布设置为“屏幕空间 - 相机”指向“UI相机”。在这下面是一个按钮,设置为向所有侧面伸展(所以全屏,400x300)
  • 第二台相机,名为“Upscaling Camera”。
  • 另一个画布设置为“屏幕空间 - 相机”指向“升级相机”。
  • 此画布删除了GraphicRaycaster组件。在这下面是一个显示渲染纹理的RawImage。

播放时,UI会正确渲染到渲染文字,然后以2倍的分辨率显示在屏幕上,填满屏幕。 工作的是事件 - 当鼠标位于屏幕的左下角时,该按钮只能与之交互。

从概念上讲,这是有道理的。该按钮占据从(0,0)到(400,300)的空间(从屏幕的左下角开始),现在我的播放器分辨率为800x600,此矩形仅覆盖左下角。我知道了。

所以,尽管如此,我该怎么做才能解决这个问题?我不能在GraphicRaycaster上设置EventCamera,所以就这样了。我的下一个想法是以某种方式捏造鼠标位置。但老实说,我不知道该去哪里。

(如果有人有更好的方法可以做到这一点 - 我正在看一款以400x300分辨率工作的游戏,需要像素完美。如果我要调整外部的所有UI,那就意味着-engine,它们基本上是在半像素网格上运行。使用CanvasScaler组件也是如此。)

欢呼任何帮助。

0 个答案:

没有答案