考虑到您正在尝试创建建筑物,您应该按程序生成自己的“立方体”/建筑物网格数据。
例如:
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
public Vector3[] newVertices;
public Vector2[] newUV;
public int[] newTriangles;
void Start() {
Mesh mesh = new Mesh();
mesh.vertices = newVertices;
mesh.uv = newUV;
mesh.triangles = newTriangles;
GetComponent<MeshFilter>().mesh = mesh;
}
}
然后您填充顶点,并使用数据进行 tris。
例如,您可以在原点 0 周围创建一个 1 x 1 的小立方体:
int size = 1;
newVertices = new Vector3[]{
Vector3(-size, -size, -size),
Vector3(-size, size, -size),
Vector3( size, size, -size),
Vector3( size, -size, -size),
Vector3( size, -size, size),
Vector3( size, size, size),
Vector3(-size, size, size),
Vector3(-size, -size, size)
};
然后因为您只想在 1 个网格面上渲染纹理;
newUV = new Vector2[]{
Vector2(0,0),
Vector2(0,1),
Vector2(1,0),
Vector2(1,1),
Vector2(0,0),
Vector2(0,0),
Vector2(0,0),
Vector2(0,0),
Vector2(0,0),
Vector2(0,0),
Vector2(0,0),
Vector2(0,0)
};
请注意,只为某些顶点分配 UV 坐标这实际上只会将您想要的纹理放置在其中一个面上,然后根据您分配 tris 的方式,其余的 UV 可以根据您认为合适的方式进行更改看起来好像没有纹理。
请注意,我是在没有 IDE 的情况下编写的,因此可能存在一些语法错误。此外,这不是最直接的过程,但我保证它远远超出了将一系列四边形用作建筑物的范围,因为这样您可以“轻松”制作各种形状。
资源:
http://docs.unity3d.com/ScriptReference/Mesh.html
https://msdn.microsoft.com/en-us/library/windows/desktop/bb205592%28v=vs.85%29.aspx
http://docs.unity3d.com/Manual/GeneratingMeshGeometryProcedurally.html