我正在尝试降低拍摄频率,如下所示:
public class createShot : MonoBehaviour {
public GameObject shot;
void Update()
{
StartCoroutine("Shot");
}
IEnumerator Shot()
{
if (Input.GetKey("space"))
{
Instantiate(shot, transform.position, transform.rotation);
yield return new WaitForSeconds(1f);
}
}
}
但是它可以在不到一秒钟的时间内发出大量垃圾邮件……有人可以帮忙吗?这是Unity5中的2D项目
最佳答案
也许您想要更多这样的东西:
float elapsedTime;
[SerializeField]
float targetTime = 1f;
void Update()
{
elapsedTime += Time.deltaTime;
if(elapsedTime >= targetTime && Input.GetKey(KeyCode.Space))
{
elapsedTime = 0;
Instantiate(shot, transform.position, transform.rotation);
}
}
这将增加计时器
elapsedTime
并检查是否超过了targetTime
。我也鼓励您尽可能停止使用字符串。在调用方法或请求类似GetKey中的键的方法时,请勿使用它们。它们会产生垃圾并降低您的软件速度。
关于c# - 如何降低Unity2D中的实例化频率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51126682/