@alexdurden

Как сделать бесконечный спавн с условием?

Всем привет! У меня на сцене есть точки которые пожирает Player, зарабатывая тем самым очки.

Спавн точек сейчас происходит в цикле “for (int i = 1; i <= 10; i++)”. Но задача сделать спавн бесконечным, при этом, чтобы единовременно на сцене было не больше 10 точек.

Мне уже сказали, что для этого надо использовать цикл “while”, но ума не приложу как прописать условие.

Помогите пжалуйста.

P.S. код в спойлере.

spoiler


[SerializeField]
    private Point _pointPrefab;
    
    [SerializeField][Range(0.1f, 100f)]
    private float delayTime = 5.0f;

    void Start()
    {
        StartCoroutine(SpawnPointsRoutine());
    }

    private IEnumerator SpawnPointsRoutine()
    {
        for(int i = 1; i <= 10; i++)
        {
            Instantiate(_pointPrefab, new Vector3(Random.Range(-9.8f, 6.5f), 0.5f, Random.Range(6.9f, 43.1f)), Quaternion.identity);
            yield return new WaitForSeconds(delayTime);     
        }
    }


  • Вопрос задан
  • 199 просмотров
Пригласить эксперта
Ответы на вопрос 3
LittleBob
@LittleBob
Вы можете попробовать заранее создать эти 10 точек прямо на сцене за камерой и во время игры просто перемещать их на место спавна. Это кстати будет и не так ресурсозатратно, потому что destroy и instantiante тяжелые функции.
Как реализовать ваш код пока не знаю, надо думать. Но, по-моему, вариант который я предложил не хуже.
Ответ написан
Комментировать
@NIKROTOS
Начинающий программист.
закинь функцию в update( чем тебе не бесконечный цикл) и пропиши условие, если точек меньше 10 создай новую.
Кстати, для оптимизации лучше не создавать/уничтожать объекты, а создать их пул. Заранее созданные 10 точек, которые просто будешь дезактивировать/активировать.
Ответ написан
KraGenDeveloper
@KraGenDeveloper
Unity Developer
В общем у меня была схожая ситуация нужно было сделать так что бы на сцене всегда было 15 платформ, платформы когда игрок к ним касается удаляются а новые создаются. В общем вот
private int pointCount = 0;

void Update(){
if(pointCount <= 10){
pointCount++;
//создаёшь точку 
}

А в коде где записано соприкосновения игрока и точки сделай просто что бы когда сожрало одну точку то pointCount --; всё.
Ответ написан
Ваш ответ на вопрос

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

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