Unity中的渲染管线(二十三):URP-分屏渲染

在通用渲染管线(URP)中,多个基础相机(Base Camera)或相机栈(Camera Stack)可渲染至同一渲染目标,从而实现分屏效果。

注意:若多个基础相机或相机栈渲染至同一目标的重叠区域,Unity 会多次绘制重叠像素。优先级最高的相机或相机栈最后渲染,覆盖之前的像素。

(一).分屏核心设置 —— 视口矩形(Viewport Rect)

通过基础相机的 Viewport Rect 属性定义渲染目标的区域。

(二).分屏渲染设置步骤

(以左右分屏为例)

操作步骤:
  1. 创建第一个基础相机

    • 在场景中创建相机,其渲染模式默认为 Base(基础相机)。
    • 选中相机,在 Inspector 窗口的输出(Output) 部分,将视口矩形设置为:

      plaintext

      X: 0 (左边界)
      Y: 0 (下边界)
      W: 0.5 (宽度,占屏幕50%)
      H: 1 (高度,占屏幕100%)
      
    • 该相机将渲染至屏幕左侧区域。
  2. 创建第二个基础相机

    • 再创建一个相机,同样为 Base 模式。
    • 设置视口矩形为:

      plaintext

      X: 0.5 (右边界起始)
      Y: 0 (下边界)
      W: 0.5 (宽度)
      H: 1 (高度)
      
    • 该相机将渲染至屏幕右侧区域。
代码中设置视口矩形

可通过脚本动态修改相机的视口矩形:

csharp

// 获取UniversalAdditionalCameraData组件
UniversalAdditionalCameraData cameraData = myCamera.GetComponent<UniversalAdditionalCameraData>();
// 设置视口矩形(示例:右半屏)
cameraData.rect = new Rect(0.5f, 0f, 0.5f, 1f);

(三).进阶分屏方案
  • 上下分屏:将第二个相机的 Y 设为 0.5,H 设为 0.5。
  • 四等分屏:设置 4 个相机的视口矩形分别为:

    plaintext

    左上:X=0, Y=0.5, W=0.5, H=0.5  
    右上:X=0.5, Y=0.5, W=0.5, H=0.5  
    左下:X=0, Y=0, W=0.5, H=0.5  
    右下:X=0.5, Y=0, W=0.5, H=0.5  
    
  • 非对称分屏:调整 W/H 值实现不规则分割(如主视角占 70%,小地图占 30%)。
性能优化建议
  1. 优先级设置:为分屏相机设置不同优先级(Priority),避免重叠区域重复绘制。
  2. 图层隔离:通过 Culling Mask 让各相机仅渲染对应图层(如玩家 1 相机只渲染玩家 1 相关对象)。
  3. 分辨率控制:降低分屏相机的 Render Texture 分辨率(尤其在移动端)。

分屏渲染适用于本地多人游戏、多视角监控或战术策略游戏的多地图同步显示场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小李也疯狂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值