Количество выполнений кода (с ограничением выполнений и сопрограмм) - PullRequest
0 голосов
/ 01 мая 2020

Я пытался создать простого спавнера с некоторой задержкой после появления зомба ie. Я установил лимит для количества зомби ie, но это не работает, потому что было создано 12 зомби вместо 10. Я могу просто исправить это, заменив lenght <= max на lenght <= max-2, но Я не знаю, что root проблемы .

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Spawner : MonoBehaviour
{
    // Start is called before the first frame update
    GameObject zombie;
    bool condition;
    public int max;
    int lenght;
    void Start()
    {
        zombie = Resources.Load("Prefabs/Zombie") as GameObject;
        max = 10;
        condition = true;
    }

    // Update is called once per frame
    void Update()
    {
        GameObject[] zombies = GameObject.FindGameObjectsWithTag("Zombie");
        lenght = zombies.Length;
        Debug.Log(lenght);
        if (condition && lenght <= max)
        {
            StartCoroutine(Spawn());
        }
    }
    private IEnumerator Spawn()
    {
        condition = false;
        while(lenght <= max){
            yield return new WaitForSeconds(1);
            Instantiate(zombie);
        }
        condition = true;
    }
}

1 Ответ

0 голосов
/ 01 мая 2020

«root проблемы» - это ваши операторы IF, у них обоих есть оператор , меньший или равный (= <), что означает, что он остановится, как только достигнет числа после 10 который порождает одного дополнительного зомба ie. Использование только <em>меньше (<) обеспечивает остановку, если число равно 10, поскольку 10 не меньше 10. </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...