【发布时间】:2016-02-24 14:05:30
【问题描述】:
我正在尝试实例化存储在数组中的随机小行星游戏对象。但是,我遇到了一个错误,无法解决。谁能帮忙:
Assets/Scripts/GameController.cs(7,49): error CS0236: A field initializer cannot reference the nonstatic field, method, or property `GameController.asteroids'
using UnityEngine;
using System.Collections;
public class GameController : MonoBehaviour {
int asteroids = 2;
GameObject[] Asteroids = new GameObject[asteroids];
public Vector3 spawnValues;
public int asteroidCount;
public float spawnWait;
public float startWait;
public float waveWait;
void Start () {
//call asteroid array variables
Asteroids [0] = gameObject.tag == "Asteroid01";
Asteroids [1] = gameObject.tag == "Asteroid02";
StartCoroutine (spawnWaves ());
}
IEnumerator spawnWaves () {
yield return new WaitForSeconds (startWait);
while (true) {
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 (Random.Range(0,1), spawnPosition, spawnRotation);
yield return new WaitForSeconds (spawnWait);
}
}
}
编辑:
我一直在玩这个,这就是我到目前为止所拥有的:
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 () {
asteroids = GameObject.FindGameObjectsWithTag("Asteroid");
StartCoroutine (spawnWaves ());
}
IEnumerator spawnWaves () {
while (true) {
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 (asteroids[i], spawnPosition, spawnRotation);
yield return new WaitForSeconds (spawnWait);
}
}
【问题讨论】:
-
int asteroids = 2;需要为static或const,或者你需要将Asteroids = new GameObject[asteroids];移动到构造函数中(或Start());
标签: c# arrays random unity3d instantiation