【发布时间】:2016-03-01 18:17:20
【问题描述】:
所以我试图通过我的 PTick 变量每 3 秒增加一次总资源我尝试通过 IEnumerator 使用它并在 start 方法中调用它,但它只运行一次,所以我在更新中尝试了它,它运行为尽快。有什么办法可以让它每 3 秒运行一次。我很乐意尝试替代方案,只要我可以让它每 3 秒运行一次。
这是我正在尝试的脚本
using UnityEngine;
using System.Collections;
public class Resources : MonoBehaviour {
private int foodPtick;
private int PowerPtick;
private int HappinessPtick;
private int MoneyPtick;
private int PopulationPtick;
public int foodTotal;
public int PowerTotal;
public int HappinessTotal;
public int MoneyTotal;
public int PopulationTotal;
void Start () {
StartCoroutine(ResourceTickOver(3.0f));
}
void Update () {
}
IEnumerator ResourceTickOver(float waitTime){
yield return new WaitForSeconds(waitTime);
foodTotal += foodPtick;
PowerTotal += PowerPtick;
HappinessTotal += HappinessPtick;
MoneyTotal += MoneyPtick;
PopulationTotal += PopulationPtick;
Debug.Log("Resources" + "food" + foodTotal + "power" + PowerTotal + "Happiness" + HappinessTotal + "Money" + MoneyTotal + "Population" + PopulationTotal);
}
public void ChangeResource(int food,int power, int happy, int money,int pop)
{
Debug.Log("Old Per Tick" + "food" + foodPtick + "power" + PowerPtick + "Happiness" + HappinessPtick + "Money" + MoneyPtick + "Power" + PopulationPtick);
foodPtick += food;
PowerPtick += power;
HappinessPtick += happy;
MoneyPtick += money;
PopulationPtick += pop;
Debug.Log("New Per Tick" + "food" + foodPtick + "power" + PowerPtick + "Happiness" + HappinessPtick + "Money" + MoneyPtick + "Power" + PopulationPtick);
}
【问题讨论】:
-
您看过 WaitForSeconds Yield 指令吗? docs.unity3d.com/ScriptReference/WaitForSeconds.html
-
你好安德鲁。只需使用
InvokeRepeating。所以,InvokeRepeating( "YourFunction", .1f, 3f);这就是它的全部内容。不要使用协程。 (除了极其高级的情况外,几乎没有理由在 Unity 中使用协程)。要取消调用,只需 CancelInvoke .. 检查简单文档 -
不要使用协程,因为它们会从 c# 开发人员的角度教坏习惯,并且很可能会导致常规 c# 工作中的私刑
标签: c# unity3d ienumerator