Unity动态对象优化
来源:互联网 发布:js模拟按键f11 编辑:程序博客网 时间:2024/06/05 04:48
Unity动态对象优化
对于静态对象,Unity可以使用通过勾选Static,然后让Unity自身进行优化Draw Calls,但是对于动态对象,Unity在这方面没有处理,这就需要我们自己去实现,实现的原理就是首先去遍历每个对象的SkinnderMeshRenderer,然后将其所有的动态对象组合成一个大的对象并且将骨骼动画赋值给他,这样,我们就实现了动态对象的优化,代码如下:
public static void CombineToMesh(GameObject _go) { SkinnedMeshRenderer[] _smr = _go.GetComponentsInChildren<SkinnedMeshRenderer>(); List<CombineInstance> lcom = new List<CombineInstance>(); List<Material> lmat = new List<Material>(); List<Transform> ltra = new List<Transform>(); for (int i = 0; i < _smr.Length; i++) { lmat.AddRange(_smr[i].materials); ltra.AddRange(_smr[i].bones); for (int sub = 0; sub < _smr[i].sharedMesh.subMeshCount; sub++ ) { CombineInstance ci = new CombineInstance(); ci.mesh = _smr[i].sharedMesh; ci.subMeshIndex = sub; lcom.Add(ci); } Destroy(_smr[i].gameObject); } SkinnedMeshRenderer _r = _go.GetComponent<SkinnedMeshRenderer>(); if (_r == null) _r = _go.AddComponent<SkinnedMeshRenderer>(); _r.sharedMesh = new Mesh(); _r.bones = ltra.ToArray(); _r.materials = new Material[] { lmat[0] }; _r.rootBone = _go.transform; _r.sharedMesh.CombineMeshes(lcom.ToArray(), true, false); }
直接调用就可。
转自:原文地址
0 0
- Unity动态对象优化
- Unity动态对象优化
- [Unity优化]对象池
- 【Unity】最优化传递对象
- Unity烘焙动态光照实现光源优化
- Unity烘焙动态光照实现光源优化
- (Unity优化) 对象池的创建
- Unity性能优化 对象延迟创建
- 静态和动态对象优化
- UNITY之动态创建NGUI对象
- 【Unity 优化】Skinned-Mesh 能动态合并嘛?
- Unity 优化
- Unity 优化
- Unity优化
- unity优化
- Unity 优化
- unity 优化
- Unity优化
- canal安装及使用
- RTSP/SDP内容分析
- hbase全表遍历的数据总是少很多
- 【BZOJ1059】[ZJOI2007]矩阵游戏【二分图匹配】
- linux ntp 同步windows 时间服务器
- Unity动态对象优化
- 远程编译 BlueZ ARM交叉编译环境配置(-)----PASS
- cocos2dx实现象棋之运动
- poj 1151 Atlantis && codeforces #337 D. Vika and Segments (线段树+扫描线)(求面积并)
- 【Linux】——搭建nexus
- GPS、Wifi等各种手机定位方式的含义及原理详解
- 1063. Set Similarity (25)
- 利用VS制作软件安装包的步骤
- Java数据结构----树--二叉查找(搜索或排序)树BST