hi so ive just started learning c# and ime coming across a problem with loops where despite no erors coming up the loop dosent seem to be working if i put print in it dosent print anything out but if i put it before it dose i dont know whether its just something in c# ime un aware of but i never had this problem with Js anyway here my code its around line 40 where the problem is
`using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class MapGen : MonoBehaviour {
public List Builders;
// Create a texture and fill it with Perlin noise.
// Try varying the xOrg, yOrg and scale values in the inspector
// while in Play mode to see the effect they have on the noise.
public int MapGenSize;
// Width and height of the texture in pixels.
public Transform ChunkPreFab;
public int pixWidth;
public int pixHeight;
// The origin of the sampled area in the plane.
public float xOrg;
public float yOrg;
// The number of cycles of the basic noise pattern that are repeated
// over the width and height of the texture.
public float scale = 1.0F;
public Texture2D noiseTex;
public Color[] pix;
void Start () {
// Set up the texture and a Color array to hold pixels during processing.
xOrg = Random.Range(-10,10);
yOrg = Random.Range(-10,10);
noiseTex = new Texture2D(pixWidth, pixHeight);
pix = new Color[noiseTex.width * noiseTex.height];
CreateChunks ();
renderer.material.mainTexture = noiseTex;
}
public void CreateChunks (){
print("12");
for (int x = 0; x < MapGenSize; ++x) { // this is the part that isnt working
for (int z = 0; z < MapGenSize; ++z) {
print("123");
Transform clone = Instantiate(ChunkPreFab, new Vector3(x * 20, 0, z * 20), Quaternion.identity) as Transform;
Builders.Add(clone.GetComponent());
clone.parent = transform;
clone.GetComponent().GenScript = this;
clone.GetComponent().BDataStore = transform.GetComponent();
}
}
CalcNoise();
}
public void CalcNoise() {
int y = 0;
while (y < noiseTex.height) {
int x = 0;
while (x < noiseTex.width) {
float xCoord = ((xOrg + x) / noiseTex.width) * scale;
float yCoord = ((yOrg + y) / noiseTex.height) * scale;
float sample = Mathf.PerlinNoise(xCoord, yCoord);
pix[y * noiseTex.width + x] = new Color(sample, 0, 0);
x++;
}
y++;
}
noiseTex.SetPixels(pix);
noiseTex.Apply();
// Copy the pixel data to the texture and load it into the GPU.
MakeMountains();
}`
i thought it might be something to do with using the variables x and y multiple times in each class any help would be much aprechated
↧