我正在尝试从头开始创建一个网格。我尝试使用.Push()
动态增加顶点数组的大小。我也试过
m.vertices.size++;
m.vertices[m.vertices.size-1] = heightMapp;
手动增加大小,但显然大小不是成员,我知道.length
是只读的。那么,我如何将数组视为Collections.Array
或如何手动增加大小?
答案 0 :(得分:1)
您无法在Array
中修改Unityscript
(也称为内置数组)的大小。这是出于性能原因。你可以阅读它here。
Mesh.vertices
是一个数组,因此您无法直接修改它。你能做的是:
built in array
,在您的情况下,它将是m.vertices.length+1
m.vertices
复制到新数组m.vertices
ToBuiltin
个值
代码如下:
var tmpArray = new Array();
for( var vert in m.vertices )
{
tmpArray.Push( vert );
}
m.vertices = tmpArray.ToBuiltin(Vector3) as Vector3[];
注意:这样做可能很昂贵,因此Unity使用内置数组作为网格中的顶点是有原因的,所以只有在没有其他选择时才这样做。尝试在一个步骤中添加尽可能多的顶点,并尽量避免逐个添加它们。