Unity3D中无效的IL代码错误

Invalid IL code error in Unity3D

我正在尝试使用 Unity3D(版本 5.0.2f1)使用 perlin 噪声生成地形,但出现此错误:

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)

代码:

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;
    }
}

您在 Random.Range 中的参数 1000000000000000 超出最大值。也许你想要 int.MaxValue ?这将是 2147483647

有趣的是它导致了 IL2CPP 这样的编译器错误!