在Unity3D中将背景设置为超出摄像机限制的区域(视口矩形)

时间:2018-07-18 08:39:16

标签: c# unity3d background camera

我正在谈论Unity3D中的相机设置。

我正在尝试确定是否可以(至少)更改屏幕截图中灰色区域的背景颜色。摄像机的限制可以通过编程方式更改。动机在于以下事实:游戏区域必须根据儿童或成人在玩而动态变化。屏幕巨大,超过83英寸。重新缩放游戏区域时,未绘制的区域是灰色且有点难看,我想知道您是否可以至少定义颜色,或者如果可能的话,还可以更好地定义图像。

您看到的屏幕截图是全屏模式下的屏幕截图,因此它包括所有像素。

enter image description here

在简短的文字和图像解释之后,让我们看一下技术细节的细节。这是我调整房间设计区域大小的方法:

public static void SetViewportCalibration()
{
    var camera = Camera.main;
    camera.pixelRect = new Rect(MinX, MinY, MaxX, MaxY);
}

是否可以设置新Rect(MinX, MinY, MaxX, MaxY)之外的灰色区域的颜色?

2 个答案:

答案 0 :(得分:3)

尝试创建另一台在其视图中没有对象且具有以下设置的相机:

清除标志:纯色

背景:选择一种颜色

ViewPort Rect::X = 0,y = 0,w = 1,h = 1,

深度:比其他摄像机小的值(将此摄像机的深度设置为0,将另一摄像机的深度设置为1)

此相机将作为屏幕的背景。

我希望我理解了这个问题:)

答案 1 :(得分:3)

有两种方法可以解决此问题。两种方式都使用两个相机。

第一种方式。创建第二个相机。第二个摄像机应比动态摄像机少Depth。然后,第二个“背景”摄像机可以显示您想要的任何内容,例如单独的Skybox,单独的UI,其他场景内容等。

第二种方式。您的动态相机实际上并未动态调整大小。而是将相机渲染到Target Texture。在材质中使用此纹理,然后将材质分配给Quad网格(最合适)。然后,该网格可以像在任何其他3D对象中一样在您的场景中使用,这意味着不仅可以定位它,还可以缩放它甚至旋转它。您添加的新相机可以具有自己的Skybox,UI等。

我会选择第二种方式。部分出于个人喜好,也因为听起来可能更适合您的情况并且更易于实现。您还可以实现更多效果,以获得额外的“哇”。