统一的网格组合器
Mesh Combiner in unity
你好我正在使用这个人的脚本https://www.youtube.com/watch?v=wYAlky1aZn4
合并网格,因为游戏是 "lagging" 或当它不 运行 流畅时被调用的任何东西。我有 34*124 个立方体,有两个不同的网格,如果我把脚本放在 object 和 34*20 childern(与我之前提到的相同的立方体)上,但如果我把它放在 object 有 32*124 children 它将它们变成看起来像有 34*20 立方体的东西。
基本上,如果我把脚本放在有更多孩子的东西上,它就会把它变成更小的东西。
这是视频中的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CombineMeshes : MonoBehaviour {
public void Combine(){
Quaternion oldRot = transform.rotation;
Vector3 oldPos = transform.position;
transform.rotation = Quaternion.identity;
transform.position = Vector3.zero;
MeshFilter[] filters = GetComponentsInChildren<MeshFilter> ();
Mesh finalMesh = new Mesh ();
CombineInstance[] combiners = new CombineInstance[filters.Length];
for (int a = 0; a < filters.Length; a++) {
if (filters [a].transform == transform) {
continue;
}
combiners [a].subMeshIndex = 0;
combiners [a].mesh = filters [a].sharedMesh;
combiners [a].transform = filters [a].transform.localToWorldMatrix;
}
finalMesh.CombineMeshes (combiners);
GetComponent<MeshFilter> ().sharedMesh = finalMesh;
transform.rotation = oldRot;
transform.position = oldPos;
for (int a= 0; a < transform.childCount; a++) {
transform.GetChild (a).gameObject.SetActive (false);
}
}
}
这正是您遇到的顶点限制问题。通过您的设置,1 个网格只能有 34*20*96 = 65.280
个顶点。之后你需要另一个网格。 124*34*96
使 404,736
超出限制。因此,您需要将网格格式更改为 UInt32
。如果延迟继续存在,我可以尝试进一步提供帮助。
你好我正在使用这个人的脚本https://www.youtube.com/watch?v=wYAlky1aZn4 合并网格,因为游戏是 "lagging" 或当它不 运行 流畅时被调用的任何东西。我有 34*124 个立方体,有两个不同的网格,如果我把脚本放在 object 和 34*20 childern(与我之前提到的相同的立方体)上,但如果我把它放在 object 有 32*124 children 它将它们变成看起来像有 34*20 立方体的东西。
基本上,如果我把脚本放在有更多孩子的东西上,它就会把它变成更小的东西。
这是视频中的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CombineMeshes : MonoBehaviour {
public void Combine(){
Quaternion oldRot = transform.rotation;
Vector3 oldPos = transform.position;
transform.rotation = Quaternion.identity;
transform.position = Vector3.zero;
MeshFilter[] filters = GetComponentsInChildren<MeshFilter> ();
Mesh finalMesh = new Mesh ();
CombineInstance[] combiners = new CombineInstance[filters.Length];
for (int a = 0; a < filters.Length; a++) {
if (filters [a].transform == transform) {
continue;
}
combiners [a].subMeshIndex = 0;
combiners [a].mesh = filters [a].sharedMesh;
combiners [a].transform = filters [a].transform.localToWorldMatrix;
}
finalMesh.CombineMeshes (combiners);
GetComponent<MeshFilter> ().sharedMesh = finalMesh;
transform.rotation = oldRot;
transform.position = oldPos;
for (int a= 0; a < transform.childCount; a++) {
transform.GetChild (a).gameObject.SetActive (false);
}
}
}
这正是您遇到的顶点限制问题。通过您的设置,1 个网格只能有 34*20*96 = 65.280
个顶点。之后你需要另一个网格。 124*34*96
使 404,736
超出限制。因此,您需要将网格格式更改为 UInt32
。如果延迟继续存在,我可以尝试进一步提供帮助。