0

我在场景中有一个物理相机,可以渲染 3D 场景。3D 场景在顶部 UI 栏和底部 UI 栏之间渲染,并已正确设置为参考分辨率 720 x 1280。

因此,问题是当分辨率发生变化时,UI 会针对该特定分辨率进行正确设置。但是在 2 个 UI 部分之间渲染的 3D 场景并没有正确地位于它们之间。为了便于理解,我附上了 2 张参考图片。

下面给出的图像基于参考分辨率,并且 3D 场景在 2 个 UI 部分之间正确匹配。

在此处输入图像描述

下面给出的图像是另一种分辨率,其中 UI 会相应地进行自我调整。但是 3D 场景不会,即相机应该移动以适应 UI 之间的 3D 场景。

在此处输入图像描述

那么,有什么方法可以根据分辨率移动相机,以便它在不同宽高比的 UI 之间正确适配。

谢谢你。

4

1 回答 1

0

首先,尝试查看相机的 ViewportRect 属性 - 它使您能够将视口裁剪到应该能够实现您所寻求的效果的区域。

然而,这具有保持“中心屏幕”透视轴的限制,在某些情况下这是不需要的。

一个“应该总是有效”的解决方案是渲染到 RednerTexture - 相机将其屏幕方面调整为 RenderTexture 方面,如果你在 RawImage 上显示你的纹理,你应该得到不错的结果。然而,这有一些性能成本(内存读取在移动设备上并不是最快的)。

如果成本不可接受,则可以构建自定义相机投影矩阵,这将尊重您所需的视口矩形,并允许任意透视,但不幸的是它并非微不足道。这是更多信息

https://docs.unity3d.com/ScriptReference/Camera-projectionMatrix.html

于 2020-06-29T13:00:42.627 回答