Version: 2022.3

Mesh.SetIndexBufferData

切换到手册
public void SetIndexBufferData (NativeArray<T> data, int dataStart, int meshBufferStart, int count, Rendering.MeshUpdateFlags flags);
public void SetIndexBufferData (T[] data, int dataStart, int meshBufferStart, int count, Rendering.MeshUpdateFlags flags);
public void SetIndexBufferData (List<T> data, int dataStart, int meshBufferStart, int count, Rendering.MeshUpdateFlags flags);

参数

data 索引缓冲区数据数组。
dataStart 要从中进行复制的数据中的第一个元素。
meshBufferStart 用于接收数据的网格索引缓冲区中的第一个元素。
count 要复制的索引数量。
flags 控制函数行为的标志,请参阅 MeshUpdateFlags

描述

设置网格索引缓冲区的数据。

注意:此方法面向旨在实现最高性能的高级用户,因为它在主要适用于原始索引缓冲区、顶点缓冲区和网格子集数据的基础网格数据结构上运行。Unity 使用此方法可执行非常少的数据验证,因此必须确保数据有效。

特别是必须确保 SubMesh 索引范围和拓扑通过 SetSubMesh 进行更新。

默认情况下,会检查索引缓冲区 data 数组中是否存在越界索引。flags 参数可以设置为 MeshUpdateFlags.DontValidateIndices 以关闭验证,从而提高性能。

有关从脚本向网格分配数据的较简单方法与较高级方法之间差异的信息,请参阅 Mesh 页面上的说明。

常规使用模式为:

var mesh = new Mesh();

// setup vertex buffer data mesh.vertices = ...;

// set index buffer mesh.SetIndexBufferParams(...); mesh.SetIndexBufferData(...);

// setup information about mesh subsets mesh.subMeshCount = ...; mesh.SetSubMesh(index, ...);