Единство, почему создается так много сборных модулей?

#c# #unity3d #game-development

Вопрос:

Код находится здесь:

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

public class SpawnManager : MonoBehaviour
{
    public GameObject[] animalprefabs;
    public float spawninterval = 2.5f;
    public float spawnDelay = 2.0f;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {

         InvokeRepeating("spawnRandomAnimal",spawnDelay, spawninterval);
        
    }

    void spawnRandomAnimal()
    {
        int animalIndex = Random.Range(0, animalprefabs.Length);
        int SpawnIndex = 20;
        Vector3 spawnPosition = new Vector3(Random.Range(-SpawnIndex, SpawnIndex), 0, 25);
        Instantiate(animalprefabs[animalIndex], spawnPosition ,animalprefabs[animalIndex].transform.rotation);
    }
}
 

Я хочу создать экземпляр сборного модуля через определенный промежуток времени случайным образом, но каким-то образом генерируются тонны сборных модулей .Я хочу, чтобы один сборный экземпляр был создан в случайном месте через определенный промежуток времени … Кто-нибудь, пожалуйста, помогите

Ответ №1:

Вы перезваниваете invokeRepeating каждый раз Update() , когда вам звонят. Каждый раз, когда он вызывается, он добавляет еще одну задачу для повторения.

Переместите его, чтобы начать устранять вашу проблему.

 void Start()
{
    InvokeRepeating("spawnRandomAnimal",spawnDelay, spawninterval);
}
 

Ответ №2:

вы используете функцию invokerepeating() в update(). вот почему создается слишком много префабов. удалите invokerepeating() из update() и попробуйте выполнить его в start() или onenable().