我正在编写一个视频游戏,在其中,我想称一种方法可以为每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分钟授予奖励生命一次
答案 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
。