Я пытаюсь сгенерировать arrayMe sh из скрипта. Если я просто положил вершины в массив. Работает нормально. Но как только я начинаю использовать индексы, он ничего не рендерит. Я пишу код в C#. Документация говорит, что этот вид кода должен работать (хотя документация для GDScript, в основном такая же). Что я делаю неправильно или чего мне не хватает?
Vector2 center = new Vector2(30,30);
Vector2 dir = new Vector2(10, 0);
Array<Vector2> vectors = new Array<Vector2>();
Array<int> indices = new Array<int>();
for(int i = 0; i < 3; i++){
vectors.Add(center + dir.Rotated(Mathf.Deg2Rad(60 * i)));
}
indices.Add(0);
indices.Add(1);
indices.Add(2);
hexMesh = new ArrayMesh();
Godot.Collections.Array arrays = new Godot.Collections.Array();
arrays.Resize((int)ArrayMesh.ArrayType.Max);
arrays[(int)ArrayMesh.ArrayType.Vertex] = vectors;
arrays[(int)ArrayMesh.ArrayType.Index] = indices;
hexMesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, arrays);
this.Mesh = hexMesh;
РЕДАКТИРОВАТЬ:
Я нашел несколько сообщений об ошибках:
E 0:00:02: 0247 Условие 'p_arrays [ai] .get_type ()! = Variant :: POOL_INT_ARRAY' истинно. возвращено: ERR_INVALID_PARAMETER серверы / визуальный_сервер. cpp: 709 @ _surface_set_data (): 0 @ void Godot.NativeCalls.godot_icall_4_141 (IntPtr, IntPtr, Int32, IntPtr, IntPtr, Int32): 10 * M5: 10 * M5). Godot.ArrayMe sh .AddSurfaceFromArrays (Godot.Mesh + PrimitiveType, Godot.Collections.Array, Godot.Collections.Array, Int32) () HexMe sh .cs: 37 @ void HexMe sh ._ Ready () ( )
и
E 0: 00: 02: 0251 Недопустимый формат массива для серверов поверхности / visual_server. cpp: 1154 @ mesh_add_surface_from_arrays (): 0 @ void Godot.NativeCalls.godot_icall_4_141 (IntPtr, IntPtr, Int32, IntPtr, IntPtr, Int32) () ArrayMe sh .cs: 245 @ void Godot.ArrayMe sh .AddSurfaceFromArrays (Годот. , Godot.Collections.Array, Int32) () HexMe sh .cs: 37 @ void HexMe sh ._ Ready () ()