Mesh.SetIndices
Declaration
public void SetIndices(int[] indices, MeshTopology topology, int submesh, int meshLod, bool calculateBounds, int baseVertex);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(List<int> indices, MeshTopology topology, int submesh, int meshLod, bool calculateBounds, int baseVertex);public void SetIndices(ushort[] indices, MeshTopology topology, int submesh, bool calculateBounds, int baseVertex);public void SetIndices(ushort[] indices, MeshTopology topology, int submesh, int meshLod, bool calculateBounds, int baseVertex);public void SetIndices(List<ushort> indices, MeshTopology topology, int submesh, bool calculateBounds, int baseVertex);public void SetIndices(List<ushort> indices, MeshTopology topology, int submesh, int meshLod, bool calculateBounds, int baseVertex);public void SetIndices(NativeArray<T> indices, MeshTopology topology, int submesh, bool calculateBounds, int baseVertex);public void SetIndices(NativeArray<T> indices, MeshTopology topology, int submesh, int meshLod, bool calculateBounds, int baseVertex);Параметры
| Параметр | Описание |
|---|---|
| индексы | Массив индексов, определяющих поверхности сетки. |
| топология | Топология сетки, e.g: Треугольники, Линии, Квадраты, Точки и т.д. См. MeshTopology. |
| субсетка | Подсетка для изменения. |
| calculateBounds | Вычисляет границу подсетки после установки индексов. Unity делает это по умолчанию. Используйте false, если вы хотите использовать существующую границу и уменьшить затраты CPU на установку индексов. |
| baseVertex | Необязательное смещение вершины, которое добавляется ко всем индексам вершин. |
| meshLod | Сетка LOD для изменения. Используйте -1 для изменения всей подсетки. Если не указано, то LOD0 изменяется. |
Описание
Задает индексный буфер для подсетки.
Субмеш представляет собой список треугольников (или индексов с другой MeshTopology), которые визуализируются с использованием одного Material. Если Mesh используется с Renderer, содержащим несколько материалов, убедитесь, что каждому Material соответствует отдельный субмеш.
SetTriangles и triangles всегда задают Mesh, состоящий из треугольных граней. Чтобы создать Mesh, состоящий из линий или точек, используйте SetIndices.
Аргумент baseVertex позволяет создавать меши более чем с 65536 вершинами при использовании 16-разрядных буферов индексов, если каждый индекс субмеша укладывается в собственный диапазон значений до 65535. Например, если переданный в SetIndices буфер индексов содержит индексы 10, 11, 12, а для baseVertex задано значение 100000, то при визуализации фактически будут использоваться вершины 100010, 100011 и 100012.
Обратите внимание: по умолчанию меши используют 16-разрядный indexFormat, то есть максимальное поддерживаемое значение в буфере индексов равно 65535 (даже при использовании входных данных int[]). Чтобы использовать большие значения буфера индексов, сначала задайте для indexFormat значение IndexFormat.UInt32.
После обновления всех субмешей вызовите Mesh.RecalculateBounds, если хотите, чтобы Mesh обновил свой ограничивающий параллелепипед.
Дополнительные ресурсы: subMeshCount, MeshTopology, indexFormat.
Declaration
public void SetIndices(int[] indices, int indicesStart, int indicesLength, MeshTopology topology, int submesh, bool calculateBounds, int baseVertex);public void SetIndices(int[] indices, int indicesStart, int indicesLength, MeshTopology topology, int submesh, int meshLod, 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(List<int> indices, int indicesStart, int indicesLength, MeshTopology topology, int submesh, int meshLod, bool calculateBounds, int baseVertex);public void SetIndices(ushort[] 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, int meshLod, 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(List<ushort> indices, int indicesStart, int indicesLength, MeshTopology topology, int submesh, int meshLod, bool calculateBounds, int baseVertex);public void SetIndices(NativeArray<T> 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, int meshLod, bool calculateBounds, int baseVertex);Параметры
| Параметр | Описание |
|---|---|
| индексы | Массив индексов, определяющих поверхности сетки. |
| indicesStart | Индекс первого элемента, который будет взят из входного массива. |
| indicesLength | Количество элементов, которые будут взяты из входного массива. |
| топология | Топология сетки, e.g: Треугольники, Линии, Квадраты, Точки и т.д. См. MeshTopology. |
| субсетка | Подсетка для изменения. |
| calculateBounds | Вычисляет границу подсетки после установки индексов. Unity делает это по умолчанию. Используйте false, если вы хотите использовать существующую границу и уменьшить затраты CPU на установку индексов. |
| baseVertex | Необязательное смещение вершины, которое добавляется ко всем индексам вершин. |
| meshLod | Уровень детализации сетки для изменения. |
Описание
Устанавливает индексный буфер подсетки, используя часть входного массива.
Этот метод ведет себя так же, как если бы вы вызвали SetIndices с массивом, который является фрагментом всего массива, начиная с индекса indicesStart и имея заданную длину indicesLength. Полученная подсетка будет иметь indicesLength количество вершинных индексов.