【问题标题】:C# How can I do that the int will subtract in loop [closed]C#我该怎么做int将在循环中减去[关闭]
【发布时间】:2015-12-30 17:24:17
【问题描述】:

当我想在统一引擎中编写脚本时遇到问题,我想每 1 秒 int 减 1。我写了这个:

Thread.Sleep(1000);
int B - 1

然后 tmultiply 100 次然后引擎崩溃了帮助

【问题讨论】:

  • 您实际上粘贴/重复了该行 100 次?
  • 完全不清楚你在说什么,请发布更多你正在尝试做的事情并解释你希望做什么(以及你为什么要尝试做你正在做的事情)
  • (1) 你想做什么? (2) 把它分成几行。 (3) "int B - 1" 声明了一个名为 B 的 int 变量(没有初始化,默认值为 0)然后减 1,但不将结果赋值给任何地方。 (4) 缺少';'最后。
  • 我对 Unity 引擎一无所知,但您可能想要一个增量设置为 1000 毫秒(1 秒)的 Timer 对象和一个递减 B 的事件处理程序。
  • @Technophile - 我在第 3 点上吹毛求疵,但int B - 1 只是无稽之谈。它不是合法的 C# 代码。此外,局部变量(看起来是这样)没有默认值,必须显式初始化。

标签: c# multithreading loops int


【解决方案1】:

这是从你的问题可以理解的:

int b = 12411; // whatever you want it to be

for (int i = 0; i < 100; i++)
{
    Thread.Sleep(1000);
    b--;
}

但是,这可能会杀死 Unity,因为这需要 100 秒才能完成。您需要的是安排为每秒运行一次的后台操作,就像 Timer 一样。然而,在 Unity 中,这最好通过协程来实现,比如这个(取自 here):

class YourClassName
{
    int b;
    void Start()
    {
        StartCoroutine("MyEvent");
        b = 100; //some number
    }

    private IEnumerator MyEvent()
    {
        while(true)
        {
            yield return new WaitForSeconds(1); // wait a second
            b--;
        }
    }
}

【讨论】:

    猜你喜欢
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 2015-12-08
    • 2020-08-02
    相关资源
    最近更新 更多