原文地址 http://www.xiaobao1993.com/743.html
如标题所诉。mesh 分离。可以实现一个 人物 用很多不同形状的武器或者装备什么的。同时 分离可以优化效率。
那这里就有一个 mesh如何合并的问题。unity提供了 mesh合并的接口。
简单示例代码如下:
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
36
37
38
39
40
|
using
UnityEngine
;
using
System
.
Collections
;
using
System
.
Collections
.
Generic
;
public
class
CombineMeshes
:
MonoBehaviour
{
void
Start
(
)
{
//获取MeshRender;
MeshRenderer
[
]
meshRenders
=
GetComponentsInChildren
<
MeshRenderer
>
(
)
;
//材质;
Material
[
]
mats
=
new
Material
[
meshRenders
.
Length
]
;
for
(
int
i
=
0
;
i
<
meshRenders
.
Length
;
i
++
)
{
mats
[
i
]
=
meshRenders
[
i
]
.
sharedMaterial
;
}
//合并Mesh;
MeshFilter
[
]
meshFilters
=
GetComponentsInChildren
<
MeshFilter
>
(
)
;
CombineInstance
[
]
combine
=
new
CombineInstance
[
meshFilters
.
Length
]
;
for
(
int
i
=
0
;
i
<
meshFilters
.
Length
;
i
++
)
{
combine
[
i
]
.
mesh
=
meshFilters
[
i
]
.
sharedMesh
;
combine
[
i
]
.
transform
=
meshFilters
[
i
]
.
transform
.
localToWorldMatrix
;
meshFilters
[
i
]
.
gameObject
.
SetActive
(
false
)
;
}
MeshRenderer
mr
=
gameObject
.
AddComponent
<
MeshRenderer
>
(
)
;
MeshFilter
mf
=
gameObject
.
AddComponent
<
MeshFilter
>
(
)
;
mf
.
mesh
=
new
Mesh
(
)
;
mf
.
mesh
.
CombineMeshes
(
combine
,
false
)
;
gameObject
.
SetActive
(
true
)
;
mr
.
sharedMaterials
=
mats
;
}
}
|
创建了一个矩形 和一个 圆形。放在一个空物体下。将上面脚本绑定在空物体上。执行
效果如下:
将mesh合并成了一个。并赋值了材质。