代码返回"The Name 'noiseMap' does not exist in current context"



噪声映射是从一个名为NoiseMapGeneration的单独脚本调用的,并且noiseMap方法是公共的。

请有人帮帮我,我已经读了一遍又一遍一个小时;我不知道我做错了什么。我在unity中使用这些脚本并测试这个部分。

public class TileGeneration : MonoBehaviour
{
[SerializeField]
NoiseMapGeneration noiseMapGeneration;
[SerializeField]
private MeshRenderer tileRenderer;
[SerializeField]
private MeshFilter meshFilter;
[SerializeField]
private MeshCollider meshCollider;
[SerializeField]
private float mapScale;
void Start()
{
GenerateTile();
}
void GenerateTile()
{
// vertices
Vector3[] meshVertices = this.meshFilter.mesh.vertices;
int tileDepth = (int)Mathf.Sqrt(meshVertices.Length);
int tileWidth = tileDepth;
float[,] heightMap = this.noiseMapGeneration.GenerateNoiseMap(tileDepth, tileWidth, this.mapScale);
Texture2D tileTexture = BuildTexture(heightMap);
this.tileRenderer.material.mainTexture = tileTexture;
}
private Texture2D BuildTexture(float[,] heightMap)
{
int tileDepth = noiseMap.GetLength(0);
int tileWidth = noiseMap.GetLength(1);
Color[] colorMap = new Color[tileDepth * tileWidth];
for (int zIndex = 0; zIndex < tileDepth; zIndex++)
{
for (int xIndex = 0; xIndex < tileWidth; xIndex++)
{
// transform the 2D map index is an Array index
int colorIndex = zIndex * tileWidth + xIndex;
float height = heightMap[zIndex, xIndex];
colorMap[colorIndex] = Color.Lerp(Color.black, Color.white, height);
}
}
Texture2D tileTexture = new Texture2D(tileWidth, tileDepth);
tileTexture.wrapMode = TextureWrapMode.Clamp;
tileTexture.SetPixels(colorMap);
tileTexture.Apply();
return tileTexture;
}
}

给将来发现这个的人。教程中的问题是它们改变了两个函数之间的名称。将noiseMap更改为heightMap

float[,] heightMap = this.noiseMapGeneration.GenerateNoiseMap(tileDepth, tileWidth, this.mapScale);

这就是他们所说的

int tileDepth = noiseMap.GetLength(0);
int tileWidth = noiseMap.GetLength(1);

让它

int tileDepth = heightMap.GetLength(0);
int tileWidth = heightMap.GetLength(1);

相关内容

最新更新