新的统一和C#和目前正在通过创建与代码的课程。2原型2的练习,我试图设置它,使狗之间产生2至5秒,每次略有变化的随机性。3然而,现在发生的是,他们是在随机间隔产生,然而,然后有一个巨大的增加数量的狗产卵,它迅速填补了场景,并使用了大量的处理能力:
我的SpawnManager脚本如下所示:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SpawnManager : MonoBehaviour
{
public GameObject[] dogPrefabs;
private float spawnRangeX = 10;
private float spawnPosZ = 20;
private float startDelay = 2;
private float startspawnDelay = 1.5f;
public float RandomSpawnBeg = 2; //* Time.deltaTime;
public float RandomSpawnEnd = 5; //* Time.deltaTime;
public float RandomSpawn = Random.Range(RandomSpawnBeg, RandomSpawnEnd);
//public float boneDelay = 2.0f;
// Start is called before the first frame update
void Start()
{
InvokeRepeating("SpawnRandomAnimal", startDelay, RandomSpawn); //calls SpawnRandomAnimals method, after 2 seconds, every 1.5 seconds.
}
// Update is called once per frame
void Update()
{
}
void SpawnRandomAnimal()
{
int animalIndex = Random.Range(0, dogPrefabs.Length);
Vector3 spawnPos = new Vector3(Random.Range(-spawnRangeX, spawnRangeX), 0, spawnPosZ); //creating a Vector3 variable which sets a random value for the x axis between the spawnRange vars, 0 on the y axis, and the spawnPosZ var for the z axis.
Instantiate(dogPrefabs[animalIndex], spawnPos, dogPrefabs[animalIndex].transform.rotation); // spawn an animal from the index with an updated vector 3 position and rotation
//InvokeRepeating("SpawnRandomAnimal", startDelay, RandomSpawn);
Debug.Log("Spawn time is " + RandomSpawn);
}
}
我有点不知道是什么原因导致了狗的攻击。我想它可能是告诉它每2 - 5帧做一次,而不是每秒钟,但是当i * RandomSpawnBeg和RandomSpawnEnd的时间。deltatime仍然以同样的方式执行。
我真的很喜欢学习C#和Unity,但是在时间是如何工作的方面有点卡住了,如果有人能为我解释一下,我会非常感激的!
谢啦,谢啦
1条答案
按热度按时间vu8f3i0k1#
首先调用重复函数
**调用方法methodName在时间秒,然后重复每repeatRate秒。**例如
InvokeRepeating("LaunchProjectile", 2.0f, 0.3f);
这意味着我将创建一个抛射物后2秒从开始帧和每0.3秒我会再次调用这个LaunchProjectile。这是调用重复现在我们解决你的问题:**Start()**在Unity中,Start()函数被调用一次,且仅在调用Update()之前的第一帧被调用一次。因此,基本上每次都是以相同的帧速率重复调用,因为随机化仅发生一次。要解决此问题,只需将调用随机化函数的位置更改为:现在测试一下,我的朋友,我希望你的Unity之旅充满快乐。我建议你阅读这篇文档,它会在很多方面帮助你Order of execution