Я имею в виду создание списка пользовательских классов, содержащих префаб препятствий, в котором будет храниться около 5 экземпляров каждого типа препятствий.Таким образом, список будет выглядеть примерно так:
Obstacle Type [0] ------> [0] Instance 1
[1] Instance 2
[2] Instance 3...
Obstacle Type [1] ------> [0] Instance 1
[1] Instance 2
[2] Instance 3...
В настоящее время я программирую 3D Runner Game на Unity3D и программирую скрипт Obstacle Generator.Сначала я начал с List>, но обнаружил, что создание пользовательского класса было бы лучше.Поэтому я создал собственный класс ObstacleSpawned, который включает в себя GameObject [], который должен включать в себя экземпляры препятствий такого типа, но у меня исключение нулевой ссылки на
obsItem.spawnedObstacles.Add (obstacle);
, и когда я пытаюсь выяснить, что являетсяпроблема в том, что это spawnedObstacles, потому что он также дает исключение нулевой ссылки в
print (obsItem.spawnedObstacles);
, которое я не знаю, как решить.Я даже не знаю, будет ли работать код или нет.
[Serializable]
public class ObstacleTypes {
public GameObject prefab;
public string name;
}
[Serializable]
public class ObstacleSpawned {
public List<GameObject> spawnedObstacles = new List<GameObject>();
}
public class ObstacleGenerator : MonoBehaviour {
// variables
public ObstacleTypes[] obstacles;
public List<ObstacleSpawned> obstaclesSpawned = new List<ObstacleSpawned> ();
[SerializeField] int numberOfInstances;
void Awake () {
for (int x = 0; x < numberOfInstances; x++) {
ObstacleSpawned obsItem = null;
for (int y = 0; y < obstacles.Length; y++) {
GameObject obstacle = Instantiate (obstacles [y].prefab, transform) as GameObject;
obstacle.name = obstacles [y].name;
obstacle.SetActive (false);
//obsItem.spawnedObstacles.Add (obstacle);
print (obsItem.spawnedObstacles);
}
obstaclesSpawned.Add (obsItem);
}
}
}
Ожидаемые результаты должны быть в форме списка, содержащего классы ObstacleSpawned, каждый из которых содержит количество экземпляров.Я пытаюсь сделать это, но это дает мне исключение нулевой ссылки.