没啥好说的。无非就是利用哈希存储已生成坐标,随机的时候判断一下是否已在该坐标生成对象
public class NewBehaviourScript : MonoBehaviour
{
public int num = 30;
public GameObject prefab;
public int width = 50;
public int height = 50;
void Start()
{
List<Vector3Int> list = new List<Vector3Int>();
for (var y = 0; y < height; y++)
{
for (var x = 0; x < width; x++)
{
list.Add(new Vector3Int(x, 0, y));
}
}
for (int i = 0; i < num; i++)
{
var index = Random.Range(0, list.Count);
var pos = list[index];
GameObject.Instantiate(prefab).transform.position = pos;
list.RemoveAt(index);
}
}
}