最近做的项目,美术给的资源很散,好多mesh需要用同一个mesh collider,所以需要自己合并mesh,然后加一个mesh collider
做了一个插件,在Hierachy中选中物体,那么它以及它的子物体的mesh,会合并成为一个mesh,并且保存到Project中,可以多选,选择几个物体就会生成几个合并的mesh
[MenuItem("Plugins/合并选择mesh")]
static void CombineMesh()
{
GameObject[] objs = Selection.gameObjects;
for (int j = 0; j < objs.Length; j++)
{
MeshFilter[] meshfilters = objs[j].GetComponentsInChildren<MeshFilter>();
CombineInstance[] combine = new CombineInstance[meshfilters.Length];
Matrix4x4 matrix = objs[j].transform.worldToLocalMatrix;
for (int i = 0; i < meshfilters.Length; i++)
{
MeshFilter mf = meshfilters[i];
MeshRenderer mr = mf.GetComponent<MeshRenderer>();
if (mr == null) continue;
combine[i].mesh = mf.sharedMesh;
combine[i].transform = matrix

项目中需要将多个分散的Mesh合并成一个,并添加Mesh Collider。本文介绍了一个Unity插件,该插件能批量合并Hierarchy中选中的物体及其子物体的Mesh,并将结果保存到Project的指定文件夹。开发过程中注意AssetDatabase.CreateAsset时应使用相对路径而非绝对路径,以及Unity关于Mesh顶点数量的限制(最多65536个)。
最低0.47元/天 解锁文章
1万+

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



