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

Mesh.SetIndices

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。尽管我们无法接受所有提交内容,但我们会阅读用户提出的每项建议更改,并在适用的情况下进行更新。

关闭

提交失败

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

关闭

取消

切换到手册

声明

public void SetIndices(int[] indices, MeshTopology topology, int submesh, bool calculateBounds = true, int baseVertex = 0);

声明

public void SetIndices(List<int> indices, MeshTopology topology, int submesh, bool calculateBounds, int baseVertex);

声明

public void SetIndices(ushort[] indices, MeshTopology topology, int submesh, bool calculateBounds, int baseVertex);

声明

public void SetIndices(List<ushort> indices, MeshTopology topology, int submesh, bool calculateBounds, int baseVertex);

声明

public void SetIndices(NativeArray<T> indices, MeshTopology topology, int submesh, bool calculateBounds, int baseVertex);

参数

indices 定义网格面的索引数组。
topology 网格的拓扑结构,例如:三角形、线条、四边形、点等。请参见 MeshTopology
submesh 要修改的子网格。
calculateBounds 在设置索引后计算子网格的边界框。Unity 默认执行此操作。当您想要使用现有的边界框并降低设置索引的 CPU 成本时,请使用 false。
baseVertex 添加到所有顶点索引的可选顶点偏移量。

描述

设置子网格的索引缓冲区。

子网格表示使用单个 Material 渲染的一系列三角形(或具有不同 MeshTopology 的索引)。当网格与具有多个材质的 Renderer 一起使用时,您应该确保每个材质有一个子网格。

SetTrianglestriangles 始终将网格设置为由三角形面组成。使用 SetIndices 创建由线条或点组成的网格。

可以使用 baseVertex 参数实现大于 65536 个顶点的网格,同时使用 16 位索引缓冲区,只要每个子网格索引在其自身的 65535 值范围内即可。例如,如果传递给 SetIndices 的索引缓冲区包含索引 10、11、12,并且 baseVertex 设置为 100000,则实际上将使用顶点 100010、100011 和 100012 进行渲染。

请注意,网格默认使用 16 位 indexFormat,即索引缓冲区中支持的最大值为 65535(即使使用 int[] 输入数据)。为了使用更大的索引缓冲区值,您应该首先将 indexFormat 设置为 IndexFormat.UInt32

如果要更新 Mesh 的边界框,请在更新所有子网格后调用 Mesh.RecalculateBounds

其他资源:subMeshCountMeshTopologyindexFormat


声明

public void SetIndices(int[] indices, int indicesStart, int indicesLength, MeshTopology topology, int submesh, bool calculateBounds, int baseVertex);

声明

public void SetIndices(List<int> indices, int indicesStart, int indicesLength, MeshTopology topology, int submesh, bool calculateBounds, int baseVertex);

声明

public void SetIndices(ushort[] indices, int indicesStart, int indicesLength, MeshTopology topology, int submesh, bool calculateBounds, int baseVertex);

声明

public void SetIndices(List<ushort> indices, int indicesStart, int indicesLength, MeshTopology topology, int submesh, bool calculateBounds, int baseVertex);

声明

public void SetIndices(NativeArray<T> indices, int indicesStart, int indicesLength, MeshTopology topology, int submesh, bool calculateBounds, int baseVertex);

参数

indices 定义网格面的索引数组。
indicesStart 要从输入数组中获取的第一个元素的索引。
indicesLength 要从输入数组中获取的元素数量。
topology 网格的拓扑结构,例如:三角形、线条、四边形、点等。请参见 MeshTopology
submesh 要修改的子网格。
calculateBounds 在设置索引后计算子网格的边界框。Unity 默认执行此操作。当您想要使用现有的边界框并降低设置索引的 CPU 成本时,请使用 false。
baseVertex 添加到所有顶点索引的可选顶点偏移量。

描述

设置子网格的索引缓冲区,使用输入数组的一部分。

此方法的行为就像您使用从 indicesStart 索引开始并具有给定 indicesLength 长度的数组调用 SetIndices 一样。生成的子网格将具有 indicesLength 数量的顶点索引。