第二个通道的纹理坐标(UV)。
此通道通常也称为“UV1”。它映射到着色器语义 `TEXCOORD1`。当您调用 Mesh.HasVertexAttribute 时,此通道对应于 VertexAttribute.TexCoord1。
Unity 可以使用此通道存储用于烘焙光照贴图的 UV,或存储用于计算实时光照贴图最终 UV 的输入 UV。有关更多信息,请参阅 光照贴图 UV。
Unity 以 0-1 空间存储 UV。[0,0] 表示纹理的左下角,[1,1] 表示右上角。值不会被钳制;如果需要,您可以使用小于 0 和大于 1 的值。
此属性是为了向后兼容而支持的,但更新的 GetUVs 和 SetUVs 函数允许您以更友好的方式访问相同的数据,如果需要,还可以使用 Vector3 或 Vector4 值。
此属性返回数据的副本。这意味着它会导致堆内存分配。这也意味着要对原始数据进行更改,您必须更新副本,然后将更新后的副本重新分配给网格。
以下示例演示了如何创建一个数组来保存 UV 数据,向它分配纹理坐标,然后将其分配给网格。
// Generate planar uv coordinates for the second uv set
using UnityEngine;
public class ExampleClass : MonoBehaviour { void Start() { Mesh mesh = GetComponent<MeshFilter>().mesh; Vector3[] vertices = mesh.vertices; Vector2[] uvs = new Vector2[vertices.Length];
for (int i = 0; i < uvs.Length; i++) { uvs[i] = new Vector2(vertices[i].x, vertices[i].z); } mesh.uv2 = uvs; } }
其他资源: GetUVs,SetUVs,AcquireReadOnlyMeshData。