#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().