unity项目优化----游戏项目场景优化思路

时间:2024-04-06 22:34:44
第一你得优化美术,减少模型面数。
第二你可以采用剔除遮罩技术,也就是传说中的OcclusionCulling技术。
第三你可以在unity中烘焙场景,优化灯光。
第四你可以自己人工的去写lod脚本,相机离角色多大距离内就加载成模型远了就成贴图。
第五你可以采用脚本分房间或者分区域加载,走到a房间就加载a房间的对象,否则全部active=false,加载的瞬间会卡,你可以写异步加载。

遮挡剔除是一种什么样的特性呢,当一个物体被其他物体遮挡住而不在摄像机的可视范围内时不对其进行渲染。.遮挡剔除在3D图形计算中并不是自动进行的。因为在绝大多数情况下离camera最远的物体首先被渲染,靠近摄像机的物体后渲染并覆盖先前渲染的物体(这被称为重复渲染,无效渲染"overdraw").遮挡剔除不同于视锥体剔除.视锥体剔除只是不渲染摄像机视角范围外的物体而对于被其他物体遮挡但依然在视角范围内的物体则不包括在内.注意当你使用遮挡剔除时你依然受益于视锥体剔除Frustum Culling.

unity项目优化----游戏项目场景优化思路

左边的场景使用了遮挡剔除.右边的场景未使用遮挡剔除.

遮挡剔除的运行将通过在场景中使用一个虚拟的摄像机来创建一个物体潜在可视性状态(set)的层级.这些数据可以让每个运行时间内的摄像机来确定什么能看见什么看不见。通过这些数据, Unity将确定只把可以看见的物体送去渲染.这将降低draw calls的数量并提供游戏的运行效率.

occlusion culling的数据由单元(cells)组成.每个单元是整个场景范围数值的一部分.更多特定的单元来自一个二叉树(binary tree. Occlusion Culling使用两个叉,一个给View Cells (静态物体)另一个给Target Cells (移动物体). View Cells map给出了一个定义了静态可视物体的索引列表(精确剔除后的静态物体).

非常重要的一点是在创建你的物体时要随时注意,因为你需要在物体的尺寸和单元的尺寸间取得一个好的平衡.理想情况下,有时你可以通过将大的物体拆成几个部分来改进遮挡剔除效果.无论如何你仍然能够将小的物体合并为一体来降低draw calls,在它们都属于一些小的组件的时候, occlusion culling将不起作用.确定组件中那个是可视的组件的选集和可视信息被认为是PVS (潜在可视状态PotentiallyVisibleSet).

<wbr>http://cl314413.blog.163.com/blog/static/190507976201271910372851/?suggestedreading&amp;wumii<br></wbr>