Unity ToBuiltIn()错误?简单回答?

时间:2016-01-03 22:54:16

标签: c# unity3d

我使用Unity API编写的所有内容

所以我有这段代码来帮助我生成地形:

Array CreateTerrainVertices(float[] _heightmap, float _resolution)
{
    Debug.Log("Creating terrain vertices");
    // The minimum resolution is 1
    resolution = Mathf.Max(1, resolution);

    Array vertices = new Array();

    // For each point, in the heightmap, create a vertex for
    // the top and the bottom of the terrain.
    for (int i = 0; i < _heightmap.Length; i++) {

        vertices.Push(new Vector2(i / resolution, _heightmap[i]));
        vertices.Push(new Vector2(i / resolution, 0));
    }

    Debug.Log("Created " + vertices.length + " terrain vertices");
    return vertices.ToBuiltin(Vector2) as Vector2[];
}

在这个剧本中,一切都超越完美!除了最后一行!

return vertices.ToBuiltin(Vector2) as Vector2[];

我收到错误“Vector2是一种类型,在此上下文中无效”。但当我删除Vector2使它看起来像:

return vertices.ToBuiltin() as Vector2[];

它告诉我我需要参数中的类型...但是看看我得到它的第一个错误说“Vector2是一个类型......”。

我该如何解决这个问题?那里有什么?

1 个答案:

答案 0 :(得分:0)

您正在创建一个灵活大小的Array对象,添加固定数量的元素,然后尝试将其转换为固定大小的数组。

使用UnityEngine.Lang.Array.ToBuiltIn(Type)的正确方法是传递一个Type对象,指定对象应转换为的类型。

library(xts)
x <- as.xts(z)
options(digits.secs=3)
(u <- make.index.unique(x, 0.001))
#                          [,1]
# 2015-12-30 09:00:29.000 33.04
# 2015-12-30 09:00:29.000 33.06
# 2015-12-30 09:00:29.001 33.07
# 2015-12-30 09:00:29.002 33.05
# 2015-12-30 09:00:29.003 33.04
# 2015-12-30 09:00:29.004 33.05
# 2015-12-30 09:00:29.005 33.04

然而,这总体上是一种效率低下的解决方案,因为阵列在其组成期间必须重新调整大小几次,然后进行转换。为什么不立即创建具有正确类型和大小的数组?

return vertices.ToBuiltIn(typeof(Vector2)); // I am removing the "as Vector2[]" as it has no effect