11.在Unity URP中使用UI相机

摘自:《游戏瞎折腾手记》https://zhuanlan.zhihu.com/p/157310749

在Unity中制作UI时,我们通常习惯于单独使用一个Camera来拍摄UI内容。

场景相机

UI相机

 

最终画面

这种制作方式有不少优点,比如避免了主场景相机的后处理效果可能会干涉UI内容等问题。

然而在Unity新出的URP(通用渲染管线)中,这一制作方法却有点问题。在相当长的一段时间内,LWRP/URP是无法像以前的内置渲染管线一样叠加Camera的。而后来,总算是可以了,但是操作方法与之前有所不同,故写文记录一下。


在URP中,Camera组件变成这样了

当我们直接把UICamera弄出来之后,我们会发现它的效果不符合预期。

这时候,我们需要手动多做几步:

首先,把UICamera的RenderType改成“Overlay

然后,把它添加到场景主相机的Stack中,

这样一来,我们就得到了符合预期的画面效果

更进一步

把UI相机手动添加到场景相机这个做法,足以应对大部分需求了。但是总觉得有点不舒服

于是去和小伙伴们讨论了一下,大概有两个思路:

思路一:全局只用一个Main Camera,由cinemachine来管理

思路二:没有什么事情是往上再摞一层不能解决的

首先我们搞个空的Camera,什么都不干,作为全局唯一的一个RenderType为Base的Camera,从游戏初始化的时候就直接DontDestroyOnLoad ,

然后UICamera和每个场景要用到的各种Camera都给放在这个Camera的Stack里面来。


那么,从代码里控制

实际上,即使在URP中,Camera还是那个Camera,UnityEngine.Camera那个Camera. 什么stack啊、renderType啊都是没有的。

它们都在这里:

在URP中,没有Camera上都会附带一个这样的组件,位于命名空间UnityEngine.Rendering.Universal

我们也可以对Camera组件使用扩展方法GetUniversalAdditionalCameraData来获得到它

而那个Stack,就是它里面的一个List<>

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Kerven_HKW

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

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

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

打赏作者

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

抵扣说明:

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

余额充值