由于要做一个puzzle拼图游戏,假设为r*c的拼图,所以要把原图分为r行c列,每一个单元显示原图材质的[width*(1/c)*nc,height*(1/r)*nr]的位置,其中nc为列索引,nr为行索引。
1,每一块需要是一个有四个顶点,两个三角形组成的mesh:
MeshRenderer renderer = gameObject.AddComponent<MeshRenderer>();
Mesh mesh = meshfilter.mesh;
mesh.vertices = new Vector3[]{new Vector3(0,0,0),new Vector3(0,1,0),new Vector3(1,1,0),new Vector3(1,0,0)};
newUV = new Vector2[] { new Vector2(0, 0), new Vector2(0, 1), new Vector2(num, 1), new Vector2(1, 0) };//0,0为材质左下角,1,1为右上角,可以根据切块的大小改变为[width*(1/c)*nc,height*(1/r)*nr]
mesh.uv = newUV;
mesh.triangles = new int[] { 0, 1, 2, 2, 3, 0 };
2,给每一块添加网格过滤器MeshFilter将材质贴图渲染在Mesh上
MeshRenderer renderer = gameObject.AddComponent<MeshRenderer>();
renderer.material = material;
这样就生成一个quad网格,用来将切割的图片块显示在网格上