Unity3D中的IL代码错误无效

Unity3D中的IL代码错误无效,unity3d,unityscript,perlin-noise,Unity3d,Unityscript,Perlin Noise,我试图使用perlin noise使用Unity3D(版本5.0.2f1)生成terain,但出现以下错误: InvalidProgramException: Invalid IL code in TerrainGenerator:GenerateFloor (): IL_0045: call 0x0a00000c TerrainGenerator.Generate () (at Assets/TerrainGenerator.js:36) TerrainGenerator.Sta

我试图使用perlin noise使用Unity3D(版本5.0.2f1)生成terain,但出现以下错误:

InvalidProgramException: Invalid IL code in TerrainGenerator:GenerateFloor (): IL_0045: call      0x0a00000c


TerrainGenerator.Generate () (at Assets/TerrainGenerator.js:36)
TerrainGenerator.Start () (at Assets/TerrainGenerator.js:23)
代码:

函数GenerateFloor(){
打印(“调用函数”);
如果(!(种子>0)){
Debug.LogError(“Seed无效。Seed:+Seed+”);
种子=随机范围(0,10000000000000);
LogError(“生成的新seed.seed:+seed+”);
}
对于(var i=0;iMath.Sqrt(size))Debug.LogError(“这是怎么发生的?!currentX=“+currentX+”size=“+size+”);
var高度=数学PerlinNoise(电流x,电流z);
heightMap[currentX*currentZ]=新矢量3(currentX,height,currentZ);
打印(“循环工作”);
//产量;
}
}

随机输入参数10000000000000。范围超出最大值。也许你想要int.MaxValue?也就是2147483647


有趣的是,它导致了IL2CPP的编译器错误

您能否指定,从何处获得此错误?在编辑器中编译脚本时?或者当您尝试为目标平台构建时?或者当你在编辑器中开始游戏时?此外,在错误中我看到了
TerrainGenerator.Generate()(位于Assets/TerrainGenerator.js:36)
TerrainGenerator.Start()(位于Assets/TerrainGenerator.js:23)
,但在您提供的代码中没有名为
Generate
Start
的方法。你也能提供它们吗?顺便说一句,可能不是问题,但是你的参数100000000000000是随机的。范围超出了最大值。也许您想要
int.MaxValue
?“那将是2147483647。”@peterept信不信由你,这确实是个问题。现在可以了。非常感谢达哈。杰出的值得将Unity作为一个bug进行归档。我在下面为其他遇到类似问题的人写了一个答案。
function GenerateFloor(){
    print("The function was called");
    if(!(seed > 0)){
        Debug.LogError("Seed not valid. Seed: " + seed + " .");
        seed = Random.Range(0, 1000000000000000);
        Debug.LogError("Generated new seed. Seed: " + seed + ".");
    }
    for(var i = 0; i < heightMap.length; i++){
        if(currentX == Math.Sqrt(size)){
            currentX = 0;
            currentZ++;
        }
        else if(currentX > Math.Sqrt(size)) Debug.LogError("How did this happen?! currentX = " + currentX + " size = " + size + " .");
        var height = Mathf.PerlinNoise(currentX, currentZ);
        heightMap[currentX * currentZ] = new Vector3(currentX, height, currentZ);
        print("For loop worked");
        //yield;
    }
}