Mesh.SetSubMesh
Declaration
public void SetSubMesh(int index, Rendering.SubMeshDescriptor desc, Rendering.MeshUpdateFlags flags);Параметры
| Параметр | Описание |
|---|---|
| индекс | Индекс субсетки. См. subMeshCount. Индексы вне диапазона вызывают исключение. |
| снижение | Данные субсетки. |
| флаги | Флаги, управляющие поведением функции, см. MeshUpdateFlags. |
Описание
Задает информацию о подсети Сетки.
Обратите внимание: SetSubMesh, SubMeshDescriptor и SetIndexBufferData предназначены для опытных пользователей, которым нужна максимальная производительность. Эти методы работают с базовыми структурами данных меша, в основном с необработанными буферами индексов, буферами вершин и данными подмножеств меша. При использовании этих методов Unity выполняет минимальную проверку данных, поэтому вы должны самостоятельно убедиться в их корректности.
В частности, убедитесь, что диапазон индексов и топология SubMesh имеют корректные значения. Индексы SubMesh в диапазоне от indexStart до indexCount не должны пересекаться с индексами других SubMesh.
При использовании LODs объекта Mesh также убедитесь, что заданный диапазон индексов каждого субмеша достаточно велик для размещения всех уровней детализации, используемых в этом субмеше. Перед настройкой subMesh может потребоваться вызвать Mesh.SetLods. Проверку можно отключить, задав для flags значение MeshUpdateFlags.DontValidateLodRanges.
Сведения о различиях между простыми и расширенными методами назначения данных объекту Mesh из скрипта приведены в примечания в Mesh, приведённые на соответствующей странице.
Значения SubMeshDescriptor-bounds, SubMeshDescriptor-firstVertex и SubMeshDescriptor-vertexCount структуры SubMeshDescriptor автоматически вычисляются методом SetSubMesh, если не передан флаг MeshUpdateFlags.DontRecalculateBounds. Обратите внимание, что это относится только к границам SubMesh. Вызовите Mesh.RecalculateBounds, чтобы пересчитать границы самого 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, ...);
// update bounds of the mesh mesh.RecalculateBounds();
Подробную информацию о том, какие данные настраивать для каждой подсетки, см. в SubMeshDescriptor.
Дополнительные ресурсы: subMeshCount, GetSubMesh, SetIndexBufferParams, SetIndexBufferData, MeshUpdateFlags.