unity runtime_error ai_generated true

ArgumentException: Index buffer format is not supported for this mesh topology. Use 16-bit indices or change topology to triangles.

ID: unity/argumentexception-mesh-indexbuffer-format

Also available as: JSON · Markdown · 中文
80%Fix Rate
85%Confidence
1Evidence
2023-11-05First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
Unity 2022.3.15f1 active
Unity 2023.2.0a18 active
Unity 2021.3.35f1 active

Root Cause

A mesh with 32-bit index format is being used with a non-triangle topology (e.g., lines, points) which only supports 16-bit indices in Unity.

generic

中文

使用了 32 位索引格式的网格与不支持 32 位索引的非三角形拓扑(例如线条、点)组合。

Official Documentation

https://docs.unity3d.com/ScriptReference/Mesh-indexFormat.html

Workarounds

  1. 85% success Change the mesh topology to triangles (MeshTopology.Triangles) in your script before assigning indices, or ensure the mesh asset is imported with triangle topology.
    Change the mesh topology to triangles (MeshTopology.Triangles) in your script before assigning indices, or ensure the mesh asset is imported with triangle topology.
  2. 75% success If you must use lines or points, ensure vertex count is below 65535 so 16-bit indices suffice. Set mesh.indexFormat = IndexFormat.UInt16 and rebuild the mesh.
    If you must use lines or points, ensure vertex count is below 65535 so 16-bit indices suffice. Set mesh.indexFormat = IndexFormat.UInt16 and rebuild the mesh.

中文步骤

  1. Change the mesh topology to triangles (MeshTopology.Triangles) in your script before assigning indices, or ensure the mesh asset is imported with triangle topology.
  2. If you must use lines or points, ensure vertex count is below 65535 so 16-bit indices suffice. Set mesh.indexFormat = IndexFormat.UInt16 and rebuild the mesh.

Dead Ends

Common approaches that don't work:

  1. 90% fail

    The error occurs because 32-bit indices are not allowed for non-triangle topologies; forcing UInt32 doesn't fix topology incompatibility.

  2. 95% fail

    Compression affects vertex data, not index format or topology.

  3. 80% fail

    Skinned mesh renderers also use the same index format constraints.