【发布时间】:2015-01-12 23:30:57
【问题描述】:
所以我正在开发一款游戏并编写了评分系统。我希望它是这样,当我向下滚动的对象等于与“Box”对象相同的 y.co-ordinate 时,分数系统将分数加一。
但是,在尝试此操作时,socre 不会更新并保持为 0。我不太清楚为什么,请您告诉我哪里可能出错以及如何解决它。
这是我用来编写评分系统的代码。任何帮助将不胜感激,谢谢。
-(void)Score{
ScoreNumber = ScoreNumber + 1;
ScoreDisplay.text = [NSString stringWithFormat:@"%i", ScoreNumber];
}
[也有一些代码在视图中做了所有。但问题不在于这部分代码,因为我以前使用过它,它工作正常。]
这是要实现但不起作用的地方...
if (ROne.center.y == IView.center.y) {
[self Score];
}
if (RTwo.center.y == IView.center.y) {
[self Score];
}
if (RThree.center.y == IView.center.y) {
[self Score];
}
if (RFour.center.y == IView.center.y) {
[self Score];
}
if (RFive.center.y == IView.center.y) {
[self Score];
}
if (RSix.center.y == IView.center.y) {
[self Score];
}
【问题讨论】:
-
也许您的意思是不在您的代码中工作,而不是在 Xcode 中工作。 Xcode 是 IDE,基本上是一个花哨的编辑器。它有助于理解和使用正确的术语。它还有助于阅读 Objectve-C 命名标准。
-
显示
ScoreNumber的声明。另外,您如何确定帧更新恰好在onething.y == anotherthing.y时发生,而不是在它通过时发生?在这种情况下,这几乎肯定是错误。 -
进一步:您使用的是什么游戏框架以及您展示的方法是什么(即在游戏循环中何时调用)?
-
我已经在我的 .h 文件中将 ScoreNumber 声明为 int,并在 View 中定义了 ScoreNumber = 0。我认为您对帧数的看法是正确的。此外,我没有添加 ==,而是添加了 >= 并且分数会更新,但是它会不断更新,直到对象重新生成到不同的坐标和页面顶部。因此,它不是在分数上加 1,而是一直加到重新生成。所以它在分数上增加了 15 而不仅仅是 1。我不知道这是否有意义。我能做些什么来确保它只在分数上加一个,而不是继续加和再生点?
-
另外,我使用 obj-c 不是 swift。而不是精灵套件。我正在一个标准的单视图控制器中制作它。