达到特定整数除法时的调用方法

时间:2016-01-11 20:39:23

标签: c# unity3d operators monodevelop

我正在编写一个视频游戏,在其中,我想称一种方法可以为每2000分得分增加一个玩家奖励生命。我不知道使用什么操作符来做这样的事情。

If (score is divisible by 2000, each increment){
 DoSomething();
 }

我甚至不确定我是否正确地提出了这个问题。基本上当玩家得分为2,000分,4,000分,6,000分等时,我想通过调用一种方法给予他/她一个额外的生命。我已经创建了方法;我只是想知道如何应用调用它的条件。

我试过用这个:

public int bonusTarget = 2000;
paddle = GameObject.Find("Paddle").GetComponent<Paddle>();

if(score >= bonusTarget){
            paddle.Bonus();
            bonusTarget += 2000;
            }

但是,它每增加一个奖励生命。我需要为每2,000分钟授予奖励生命一次

3 个答案:

答案 0 :(得分:1)

&#34;得分可以被2000&#34;

整除
if (score % 2000 == 0) DoSomething()

如果您需要跟踪得分使用属性而不是varilable,例如:

private int _score;
public int Score 
{
    get 
    {
         return _score;
    }
    set 
    {
        var a = Math.Floor(_score / 2000)
        var b = Math.Floor(value / 2000)
        if (a < b) DoSomething(); 
        _score = value;
    }
}

答案 1 :(得分:0)

if(score is divisible by 2000)检查放在DoSomething()方法中。

在增加分数的数十种可能的代码路径中,没有理由将其置于增加奖励生命的方法之外。您需要一个中心位置,分数增加,并检查各种条件。

答案 2 :(得分:0)

您需要一个集中的位置来添加到分数中,如下所示:

public void AddToScore(int points)
{
    score += points;
    if (score >= bonusTarget)
    {
        bonusTarget += 2000;
        paddle.Bonus();
    }
}

我在条件块中切换了两行,以防paddle.Bonus()尝试自己添加点,这可能会导致问题,甚至可能导致无限递归。

如果你这样做,你总是使用这种方法添加到乐谱中,你可以添加你想要的任何特殊处理。您可能还想写一个ResetScore()和一个GetScore(),这样您就不会直接在代码中的其他位置访问score