【问题标题】:how can i copy the variable in unity c#?如何在统一 c# 中复制变量?
【发布时间】:2020-09-27 10:48:52
【问题描述】:
IEnumerator reload()
    {
        if (total_bullet >= start_bullet)
        {
            firable = false;
            yield return new WaitForSeconds(reloadtime);
            currentbullet = 0 + start_bullet;
            total_bullet -= start_bullet;
            firable = true;
        }
        else
        {
            firable = false;
            yield return new WaitForSeconds(reloadtime);
            currentbullet = 0 + total_bullet;
            total_bullet -= total_bullet;
            firable = true;
        }
        
    }
}

这是我的游戏的重新加载代码。之后,我每次射击都会减少当前子弹。
但重新加载后,有时 total_bullet 反而会减少,有时则不会。我想我需要复制变量,但它是正确的解决方案吗?如果是,我该怎么做?

【问题讨论】:

    标签: c# unity3d variables copy


    【解决方案1】:

    一个猜测是;在您开始另一个协程之前,前一个协程可能不会结束,它可能会搞砸。

    尝试将您的协程分配给一个变量并在再次调用之前停止协程。

    类似:

    //Put this at the definitions part of your code.
    Coroutine coReload;
    
    //This is for the function where you call your reload() function.
    if (coReload != null)
    {
        StopCoroutine(coReload);
    }
    coReload = StartCoroutine(reload());
    

    否则,了解有关您的代码的更多信息会很有帮助。

    【讨论】:

    • 可能想要指定“上面的帖子”是什么。随着时间的推移,这里的事情会重新洗牌,将来有人很难理解你在说什么。
    【解决方案2】:

    total_bullet -= total_bullet;这行代码使得total_bullet的值等于0,所以可以直接将变量设置为0。

     IEnumerator reload()
     {
         firable = false;
         if (total_bullet >= start_bullet)
         {
             yield return new WaitForSeconds(reloadtime);
             currentbullet = 0 + start_bullet;
             total_bullet -= start_bullet;
             firable = true;
         }
         else
         {
             yield return new WaitForSeconds(reloadtime);
             currentbullet = 0 + total_bullet;
             total_bullet = 0;
             firable = true;
         }        
     }
    

    【讨论】:

    • 这并不能解决问题吗?
    【解决方案3】:

    查看您的代码时,我能找到不减少 total_bullet 的唯一原因是 start_bullet 为零。

    【讨论】:

    • 那么我想我们需要更多地了解包含此方法及其字段的类。就我个人而言,我会从添加一些 console.log 开始,以便更好地了解正在发生的事情。
    猜你喜欢
    • 2020-07-29
    • 2011-08-06
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 2012-09-08
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多