LOD技术
1、创建空物体,添加组件Lod Group
2、把不同细节的模型分别拖入到相对应的LOD0、LOD1、LOD2中去
3、调节每个区间的大小,测试
遮挡剔除
概念:只渲染那些在视野内的游戏物体
步骤:
①选中需要遮挡剔除的所有游戏物体,属性面板右上角小箭头下拉,选择Occluder Static
②菜单栏中Window->Occlusion Culling
③Occluder Static打勾,Bake
④选择Camera,测试
光照贴图
原因:光源的渲染要计算光的信息,会消耗性能。
步骤:
①打好场景光
②全选需要光照贴图的模型,属性面板右上角下拉单选择Lightmap Static
③菜单栏中Windows->Lighting->Build
④全选灯光,Baking属性修改为Baked,然后把灯光隐藏,模型上任然看起来有灯光
Mash合并
是指把多个模型合并成一个模型,可以在3DMax和玛雅和Unity中完成
Mash Render组件负责渲染
Mash Filter组件负责存放合并后的mesh
为什么要合并:如果有1000个小mesh,和1个大mesh,它们的大小一样,对于GPU来说渲染的大小没有变,但是对于CPU来说准备工作做1000次要比1次更耗性能
合并代码
void Start ()
{
Combiner();
}
void Combiner()
{
MeshFilter[] filters = GetComponentsInChildren();
CombineInstance[] instances = new CombineInstance[filters.Length];//Unity提供的类专门用来处理合并
for (int i = 0; i < filters.Length; i++)
{
instances[i].mesh = filters[i].sharedMesh;
instances[i].transform = filters[i].transform.localToWorldMatrix;//矩阵,用来转换坐标
}
Mesh finalMesh = new Mesh();
finalMesh.CombineMeshes(instances);
GetComponent().sharedMesh = finalMesh;
}
此代码只能在运行的时候合并Mesh,因为只有运行的时候才执行代码,停止运行之后还是恢复到合并之前,如果想真正的合并,可以把代码放在Editor中,通过菜单栏中的选项对游戏对象进行合并,这样就可以真正的合并Mesh了。