Spawn Objects on Grid - how to define size?

Hey!
I want to span some cubes on a Grid. for this iam using this script:

using UnityEngine;
using System.Collections;

public class WorldSpawn : MonoBehaviour {

	public GameObject block1; 

	public int worldSize = 10;

	public int worldWidth  = 10;
	public int worldHeight  = 10;

	public float spawnSpeed = 0;

	void  Start () {
		StartCoroutine(CreateWorld());
	}

	IEnumerator CreateWorld () {
		for(int x = 0; x < worldWidth; x++) {
			yield return new WaitForSeconds(spawnSpeed);

			for(int z = 0; z < worldHeight; z++) {                
				yield return new WaitForSeconds(spawnSpeed);

				GameObject block = Instantiate(block1, Vector3.zero, block1.transform.rotation) as GameObject;
				block.transform.parent = transform;
				block.transform.localPosition = new Vector3(x, 0, z);
			}
		}
	}
}

what i want to do now is, only have to define the “worldSize” int and the worldWidth and worldHeight gets calculated automatically based on this value. so for example if i say worldSize= 25 the worldHeight&worldWidth should be 5x5. how can i do this?

another question would be how can i do a non-square? so - same example: if i say worldSize= 25 the worldHeight&worldWidth should be 3x8.333 (so in the last row is only one square). how can i do this?

You’ll need to define how worldSize is converted to worldWidth and worldHeight. I wouldn’t suggest this. I would suggest not using worldSize at all and just using width and height. If you do want to use worldSize then you’re really only going to be able to do something like worldSize = 100, worldHeight = Mathf.sqrt(worldSize). So you’d be stuck with equal width and height always.