Задать вопрос
@kron92

Рандомный спаун из списка с уничтожением в Unity?

Доброго дня!
Помогите с кодом в Unity:
Есть 10 объектов, все скрыты. Необходимо включить видимость рандомного объекта по кнопке.
Нажимая ту же кнопку в следующий раз, видимый объект необходимо удалить, показать следующий рандомный объект уже из 9.
Когда удалятся все объекты, нужно загрузить снова все 10 и заново по кругу.
Все это одной кнопкой на одной сцене.

Сейчас есть следующий код, но он не подходит, т.к. часто идут повторения из 10 объектов:
public class Breakfast : MonoBehaviour
{
    public GameObject[] obj;

    public void Start()
    {

        Spawn();
    }

    public void Spawn()
    {
        obj[Random.Range(0, obj.Length - 1)].SetActive(true);
    }

    public void Push()
    {
        SceneManager.LoadScene("Breakfast");

    }
}
  • Вопрос задан
  • 33 просмотра
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
@SushkaCraftHabr
Должно работать, не проверял.
using UnityEngine;
using System.Collections.Generic;

public class Breakfast : MonoBehaviour
{
    public GameObject[] objects;
    private List<int> _remainingObjects;
    
    public void Start()
    {
        InitializeObjects();
    }

    public void Push()
    {
        if (_remainingObjects.Count == 0)
        {
            InitializeObjects();
        }

        int randomIndex = Random.Range(0, _remainingObjects.Count);
        int objectToShowIndex = _remainingObjects[randomIndex];

        objects[objectToShowIndex].SetActive(true);

        _remainingObjects.RemoveAt(randomIndex);
    }

    private void InitializeObjects()
    {
        _remainingObjects = new List<int>();
        for (int i = 0; i < objects.Length; i++)
        {
            _remainingObjects.Add(i);
            objects[i].SetActive(false);
        }
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы