Unity,为什么生成了这么多预制件?
Unity, why so many prefabs are getting generated?
代码在这里:
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);
}
}
我想在特定时间间隔后随机实例化预制件,但不知何故生成了大量预制件。我希望在时间间隔后在随机位置实例化一个预制件...有人 plzzzz 帮助
每次调用 Update()
时,您都在重新调用 invokeRepeating
。每次调用它时,它都会添加另一个要重复的任务。
移动它以开始解决您的问题。
void Start()
{
InvokeRepeating("spawnRandomAnimal",spawnDelay, spawninterval);
}
您正在 update() 中使用 invokerepeating() 函数。这就是为什么会生成太多预制件的原因。从 update() 中删除 invokerepeating() 并在 start() 或 onenable() 中尝试它。
代码在这里:
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);
}
}
我想在特定时间间隔后随机实例化预制件,但不知何故生成了大量预制件。我希望在时间间隔后在随机位置实例化一个预制件...有人 plzzzz 帮助
每次调用 Update()
时,您都在重新调用 invokeRepeating
。每次调用它时,它都会添加另一个要重复的任务。
移动它以开始解决您的问题。
void Start()
{
InvokeRepeating("spawnRandomAnimal",spawnDelay, spawninterval);
}
您正在 update() 中使用 invokerepeating() 函数。这就是为什么会生成太多预制件的原因。从 update() 中删除 invokerepeating() 并在 start() 或 onenable() 中尝试它。