从数组中生成游戏对象
spawn gameobject from array
我在 for 循环中从数组生成随机小行星时遇到一些问题。
数组现在可以工作了,但是(我假设这是在某处的 for 循环中)它不会在不同的游戏对象之间交替。无论哪个对象先生成,每次都会生成,但每次加载游戏时,它每次都会生成不同的对象。
如何让它在每次生成实例后从数组中选择一个新的随机对象?
using UnityEngine;
using System.Collections;
public class GameController : MonoBehaviour {
public GameObject[] asteroids;
public Vector3 spawnValues;
public int asteroidCount;
public float spawnWait;
public float startWait;
public float waveWait;
void Start () {
StartCoroutine (spawnWaves ());
}
IEnumerator spawnWaves () {
GameObject asteroid = asteroids[Random.Range(0, asteroids.Length)];
while (asteroidCount > 0) {
for (int i = 0; i < asteroidCount; i++) {
Vector3 spawnPosition = new Vector3 (spawnValues.x, Random.Range (-spawnValues.y, spawnValues.y), spawnValues.z);
Quaternion spawnRotation = Quaternion.identity;
Instantiate (asteroid, spawnPosition, spawnRotation);
yield return new WaitForSeconds (spawnWait);
}
}
}
}
你 select 在循环外生成的对象
GameObject asteroid = asteroids[Random.Range(0, asteroids.Length)];
需要在这里
while (asteroidCount > 0) {
for (int i = 0; i < asteroidCount; i++) {
GameObject asteroid = asteroids[Random.Range(0, asteroids.Length)];
我在 for 循环中从数组生成随机小行星时遇到一些问题。
数组现在可以工作了,但是(我假设这是在某处的 for 循环中)它不会在不同的游戏对象之间交替。无论哪个对象先生成,每次都会生成,但每次加载游戏时,它每次都会生成不同的对象。
如何让它在每次生成实例后从数组中选择一个新的随机对象?
using UnityEngine;
using System.Collections;
public class GameController : MonoBehaviour {
public GameObject[] asteroids;
public Vector3 spawnValues;
public int asteroidCount;
public float spawnWait;
public float startWait;
public float waveWait;
void Start () {
StartCoroutine (spawnWaves ());
}
IEnumerator spawnWaves () {
GameObject asteroid = asteroids[Random.Range(0, asteroids.Length)];
while (asteroidCount > 0) {
for (int i = 0; i < asteroidCount; i++) {
Vector3 spawnPosition = new Vector3 (spawnValues.x, Random.Range (-spawnValues.y, spawnValues.y), spawnValues.z);
Quaternion spawnRotation = Quaternion.identity;
Instantiate (asteroid, spawnPosition, spawnRotation);
yield return new WaitForSeconds (spawnWait);
}
}
}
}
你 select 在循环外生成的对象
GameObject asteroid = asteroids[Random.Range(0, asteroids.Length)];
需要在这里
while (asteroidCount > 0) {
for (int i = 0; i < asteroidCount; i++) {
GameObject asteroid = asteroids[Random.Range(0, asteroids.Length)];