
在 Unity 中渲染 3D 视图时,游戏场景中不可见的对象通常在浪费资源,通常优化这类情况,需要使用遮挡剔除,主要将摄像机不可见之外的对象删除,达到减少内存的目的。
从下面的 Unity 场景可以从顶视图看到该场景内的对象组成结构,一般情况下这种渲染会占用大量的内存,说白了就是因为场景资产太多。

因此我们需要通过遮挡剔除技术来优化我们的场景,在开头提到遮挡剔除会将摄像机不可见之外的对象进行删除,这过程是真的删除不是隐藏!因此这些对象是不会参与渲染。
既然要将摄像机之外的对象进行删除,那么须先告诉系统希望被剔除的对象是谁?
那么…
在 Unity 中被剔除的对象仅支持静态网格,不支持动态网格,因为涉及到烘焙。
咋们这个例子是 HDRP 专有内容,因此需要确保安装了高清渲染管道,如果不确定如何进行此设置,可以查看一下3D天堂网站内文章。
具体步骤
1. 选择被剔除的静态网格右上角的 Static(静态)菜单并启用 occluder static 和 occludee static。

2. 然后从 Win 菜单 Rendering(渲染)选项,打开 Occlusion Culling(遮挡剔除)。

3. 选择 Occlusion 下烘焙选项卡,其他参数不用动,直接点击底部的烘焙按钮,等待提示完成。

最终效果
烘焙之后,就可以在视口中通过转动摄像机看到剔除的效果了,在摄像机视口内的则显示,视角之外的则自动删除,类似在上下左右加了四个“刀片”。
