GameObjects have different positions, but stay in one place

Why do all of my fields are in the same position in the Scene view, but the transform.position is different?

private void GenerateTileMap() {
		fields = new GameObject[worldSize, worldSize];
		for (int x = 0; x < worldSize; x++) {
			for (int y = 0; y < worldSize; y++) {
				fields [x, y] = new GameObject ("Field");
				fields [x, y].transform.localPosition = new Vector3 (x * fieldSize, 0f, y * fieldSize);
				fields [x, y].transform.SetParent (transform);

				GameObject newField = BuildTile (10f, "Tile");
				newField.transform.SetParent (fields[x, y].transform);
				newField.transform.position = new Vector3 (0f, 0f, 0f);
			}
		}
	}

	private GameObject BuildTile(float size, string name) {
		GameObject newTile = GameObject.CreatePrimitive (PrimitiveType.Cube);
		newTile.name = name;
		newTile.transform.localScale = new Vector3 (size, 1f, size);
	
		MeshRenderer rend = newTile.GetComponent<MeshRenderer> ();

		return newTile;
	}

If you want your Tile at the same position as the “field” you parent it to (if not tell me and I’ll delete answer):

newField.transform.position = new Vector3 (0f, 0f, 0f);

would be incorrect becuase you assigning to the world position value.
These two options would be what you need, I recommend the second (note how it is similar/dissimilar to what you do with the “fields”, and THEIR parent).

newField.transform.position = fields[x, y].transform.position; 

or

newField.transform.localPosition = new Vector3 (0f, 0f, 0f);

PS: you are storing the built tile in an object named newField- could be a little confusing.