大家好,大家帮帮忙。 我是一个 Unity 的新手,正在学习使用它来制作一款模拟PlayStation可怕的游戏。 我已经尝试了几种方式,但希望仍然无法解决这个问题。

我的游戏以320×240的分辨率渲染,主摄像机输出到一个320×240大小的RenderTexture中,并使用一个RawImage组件在一个Screen Space - Overlay Canvas上显示。这一切看起来相当好,但是有一个问题:所有的UI(文本、面板、按钮、对话框)都渲染在原来的分辨率上,看起来相当的锐利和清晰,与模拟游戏的低分辨率不符。 我想要所有界面元素,包括UI,也看起来像是在320×240的分辨率下渲染,目前无法实现。

这里有我尝试过的方法:

  1. 我改变了Canvas到Screen Space - Camera,使用主摄像机,并将RawImage显示在一个单独的Overlay Canvas上,避免了循环引入的可能性。结果是每次都变成灰色。

  2. 我创建了一个新的摄像机,设置为过滤只显示UI,输出到一个320×240大小的RenderTexture中。然后我改变了Canvas到Screen Space - Camera,使用这个UICamera,并将结果显示在一个单独的Overlay Canvas RawImage中。结果是UI是非常小的,半透明的,最不能点击。 我没有成功解释为什么会这样。

  3. 我尝试写脚本来检测渲染后UI的画面,然后将其压缩。结果是所有这些回调函数都失败了,或者没反应,或者变成灰色。

  4. 我写了一个简单的片段程序,用于将UV取样化为320×240的网格,然后将其应用到全屏渲染的特性集,放在渲染后进行。结果是灰色全屏。

甚至尝试了一个空的通过式渲染程序,它只是返回原始屏幕图像,而这也会变成灰色。

  1. 我编写了一个URP兼容的透明片段程序,包含了抖动和定格功能,尝试将其应用到UI图片组件的材质中。结果是无法正确分配材质。

我的设置是:

  • Unity 6
  • 主摄像机渲染到320×240大小的RenderTexture(点式滤波)
  • RawImage在Canvas - Overlay Space空间中显示全屏
  • Canvas Scaler设置为跟随屏幕大小,参考像素分辨率为900×506
  • AERO Volumetric Fog通过全屏渲染特性进行渲染
  • 全局声调器分辨率影像、光晕、色彩调整、色差效应等处理

我真的是一脸懵逼了,所有的尝试都失败了。能否有人解答URP中如何将UI图像元素Pixel化以匹配游戏渲染的分辨率,我将很有感激的。