public static bool DetectChange(int id, Mesh mesh, Transform transform = null) { if (mesh == null) return false; if (detectChangeTable.ContainsKey(id)) { MeshDataMirror mirror = detectChangeTable[id]; bool change = false; if (transform != null) { change = mirror.position != transform.position || mirror.rotation != transform.rotation || mirror.scale != transform.GetScale(); } if (!change) { change = mirror.meshInstanceID != mesh.GetInstanceID() || mirror.vertexCount != mesh.vertexCount || mirror.blendShapeCount != mesh.blendShapeCount || mirror.subMeshCount != mesh.subMeshCount || //mirror.triangleCount != mesh.triangles.Length || //mirror.tangentCount != mesh.tangents.Length || //mirror.uvCount != mesh.uv.Length || mirror.extents != mesh.bounds.extents; } return change; } else { MeshDataMirror mirror = new MeshDataMirror(); mirror.meshInstanceID = mesh.GetInstanceID(); mirror.vertexCount = mesh.vertexCount; mirror.blendShapeCount = mesh.blendShapeCount; mirror.subMeshCount = mesh.subMeshCount; //mirror.triangleCount = mesh.triangles.Length; //mirror.tangentCount = mesh.tangents.Length; //mirror.uvCount = mesh.uv.Length; mirror.extents = mesh.bounds.extents; if (transform != null) { mirror.position = transform.position; mirror.rotation = transform.rotation; mirror.scale = transform.GetScale(); } detectChangeTable.Add(id, mirror); return true; } }