如何解决如何减少我的void update更新的次数?
我目前正在开发气象应用程序,该应用程序使用的API每天允许500个请求。我意识到在运行该应用程序后的5秒钟内,我的日常用完了。这意味着我的void update()每秒获取值60次(=帧速率)。如何将其降低到每15秒一次?提前非常感谢您!
当前我的无效更新看起来像这样
void Update()
{
StartCoroutine(GetAqiInfo());
}
解决方法
我建议您研究InvokeRepeting。 Link Here
您应该创建另一个在给定的时间内要调用的方法,而不是Update方法。
using UnityEngine;
using System.Collections.Generic;
public class ExampleScript : MonoBehaviour
{
public Rigidbody projectile;
void Start()
{
InvokeRepeating("RepeatedAction",2.0f,0.3f);
}
void RepeatedAction()
{
GetAqiInfo();
}
}
,
如何减少我的void update()更新的次数?
首先直接回答您的问题,除了每秒更改帧数之外,您无法真正更改调用update方法的时间。那并不会很难。
我建议您宁愿检查IEnumerator是否正常工作,因为似乎您是在每个帧中调用它,而不是在完成后再次调用它。
要修复此问题,您可以使用协同程序类型并检查其当前是否正在运行。
Coroutine current;
void Update() {
if (current == null){
current = StartCoroutine(GetAqiInfo());
}
}
现在,我们可以编辑枚举器,将Couroutine设置为false后再将其设置为false。
如果您还想确保请求不超过500个,则可以在输入IEnumerator之前进行检查。
int requests = 0;
IEnumerator GetAqiInfo()
{
if (request >= 500){
return;
}
// Get the Aqi Info and increase the request count by 1
request++;
yield return new WaitForSeconds(15f);
current = null;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。