|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
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
);
}
|
Unity动态对象优化
最新推荐文章于 2024-04-02 12:56:57 发布
本文介绍了一种在Unity中优化动态对象的方法,通过遍历所有SkinnedMeshRenderer组件,组合动态对象并应用骨骼动画,从而减少DrawCalls。提供了一个完整的源代码示例,方便开发者直接调用。
12万+

被折叠的 条评论
为什么被折叠?



