版本: Unity 6 (6000.0)
语言English
  • C#

Mesh.uv3

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每个建议更改,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册
public Vector2[] uv3;

描述

第三通道中的纹理坐标 (UV)。

此通道通常也称为“UV2”。它映射到着色器语义`TEXCOORD2`。当您调用Mesh.HasVertexAttribute时,此通道对应于VertexAttribute.TexCoord2

Unity 可以使用此通道存储它用于计算实时光照贴图的最终 UV 的输入 UV。有关更多信息,请参见光照贴图 UV

**注意:**当 Unity 渲染引用此网格并使用实时全局光照的MeshRenderer时,Unity 会将MeshRenderer.enlightenVertexStream中的数据流式传输到`TEXCOORD2`,而不是此通道中的数据。有关更多信息,请参见光照贴图 UV

Unity 将 UV 存储在 0-1 空间中。[0,0] 表示纹理的左下角,[1,1] 表示右上角。值不会被钳位;如果需要,您可以使用低于 0 和高于 1 的值。

此属性支持向后兼容,但更新的GetUVsSetUVs函数允许您以更用户友好的方式访问相同的数据,并在需要时使用 Vector3 或 Vector4 值。

此属性返回数据的副本。这意味着它会导致堆内存分配。这也意味着,要对原始数据进行更改,您必须更新副本,然后将更新后的副本重新分配给网格。

以下示例演示如何创建一个用于保存 UV 数据的数组,为其分配纹理坐标,然后将其分配给网格。

// Generate planar uv coordinates for the third 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.uv3 = uvs; } }

其他资源:GetUVsSetUVsAcquireReadOnlyMeshData