【问题标题】:Wait For Seconds Stopping Symptoms(Unity)等待几秒钟停止症状(团结)
【发布时间】:2021-02-23 17:30:42
【问题描述】:
private void Start() 
{ 
    DataController.GetInstance().LoadItemButton(this); 
    StartCoroutine("AddMoneyLoop"); 
    UpdateUI();
}

IEnumerator AddMoneyLoop()
{
    while(true)
    {
        if(isPurchased)
        {
            DataController.GetInstance().AddMoney(moneyPerSec);
        }
        //Thread.Sleep(2000);
        yield return new WaitForSeconds(1.0f);
    }
}

我用上面的代码进行了编码。 我希望 AddMoney 每秒循环一次。 但重复3~6次后就停止了。

yield return new WaitForSeconds(1.0f);

我认为上面的代码是问题所在。你是怎么解决的?

【问题讨论】:

  • 这个协程运行的游戏对象是禁用还是销毁?否则it stops到底是什么意思?得到任何错误?所以你在某个地方改变了Time.timeScale?如果没有更多信息/代码,则无法在此处给出答案...

标签: c# unity3d


【解决方案1】:

根据您的代码的其余部分,它可能会被垃圾收集。你应该在启动它时将它分配给你的类中的一个字段。

【讨论】:

  • private void Start() { DataController.GetInstance().LoadItemButton(this); StartCoroutine("AddMoneyLoop");更新UI(); } 上面的代码就写好了。
  • 哦,如果 Unity 是通过名称来实例化它,那么你就不走运了,你无能为力。
  • 你是说没有解决办法?
  • 没有什么是不可能的,它只取决于你的代码(不是随机的小sn-ps,你的整个代码)。例如,一个快速的谷歌搜索给出了这个:answers.unity.com/questions/1259637/…
  • @Blindly 这与 GC 没有真正的关系 .. 您看到的 IEnumerator 正在作为 Coroutine 运行 .. 没有更多信息/代码,无法在这里给出答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-04
  • 1970-01-01
  • 2012-09-15
  • 1970-01-01
  • 2017-07-20
相关资源
最近更新 更多