Как сделать рулетку в unity3d?

private void GenerateStuff ()
	{
		for (int i = 0; i < prefabs.Length; i++) {
		}
		for (int i = 0; i < 40; i++) {
			int rand = Random.Range (0, 1000);
			int randStuff = 0;
			if (rand <= 600) {
				randStuff = 0;
			} else if (rand > 600 && rand <= 800) {
				randStuff = 1;
			} else if (rand > 800 && rand <= 900) {
				randStuff = 2;
			} else if (rand > 900 && rand <= 950) {
				randStuff = 3;
			} else if (rand > 950 && rand <= 1000) {
				randStuff = 4;
			}
			GameObject obj = Instantiate (prefabs[randStuff], new Vector2(0, 0), Quaternion.identity) as GameObject;
			obj.transform.SetParent (scrollPan.transform);
			obj.transform.localScale = new Vector2 (1, 1);
		}
	}


Как сделать, чтобы при следующем срабатывании метода, старые созданные префабы удалились, и сгенерировались новые?
  • Вопрос задан
  • 1368 просмотров
Решения вопроса 1
MrMureno
@MrMureno Куратор тега Unity
VR for all
новые у вас и с этим кодом создадуться, тут проблем нету.

а удалить старые. есть у вас
GameObject obj - ссылка на объект.
сохраните в классе ссылку на него (сейчас это локальная переменная в методе)
(в вашем случае это будет массив ссылок или список)
List<GameObject> objRefs  = new List<GameObject>();

/////

for ()
{
//вот вы создали объект и запоминаем в список
objRefs.Add(obj);
}

/////удалить все из списка пройтись по списку
foreach(var obj in objRefs)
{
Destroy(obj );
}
objRefs.Clear(); // и почистили список


чистите старые объекты..в начале вашего метода к примеру.
еще перед удаление объекта - можете проверить его на null, чтоб не пробовать удалять старые, вдруг они у вас самоуничтожаться могут или еще какая-то логика.

Ну и так к слову..инстанциация дорогая операция, подумкйте над тем что возможно стоит создать все префабы на сцене и просто включать/выключать (может еще перемещать и настраивать) готовые уже объекты на сцене.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы