我有一个游戏创意,不需要任何SpriteKit功能,如(物理,碰撞或动作),这是一个简单的策略游戏,比如(Plague Inc或Democracy),你们熟悉那些游戏。所以我想我可以让自己变得简单,只需使用Storyboard viewControllers和object,而不是在代码中完成所有这些操作,就可以正常创建它。但是SpriteKit有一个功能对于我的游戏(或任何游戏)而言非常重要,而这些游戏并非构建在正常的Xcode项目中,这是“更新”方法,你知道跟踪得分和其他值,所以我实现了接近它的东西并且工作得很好:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var finish = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "check", userInfo: nil, repeats: true)
}
func check() {
if score == 10 {
println("Win!")
}
}
这很好用,但我不确定这是不是最好的做法,或者这样的方法会影响应用程序的性能多少,特别是如果我有多个方法一直运行。
答案 0 :(得分:6)
我创建了有或没有SpriteKit的游戏,你正在做的事情非常好。
您可能需要考虑在您更新分数的任何地方检查分数。如果分数在多个位置更新,则调用更新分数的功能,然后立即进行检查。然后,您可以一起避免循环。此外,如果分数在循环运行之前多次更新,则可以跳过分数== 10的情况。
答案 1 :(得分:2)
使用当前代码,您每秒都会调用check()
函数。所有这个函数都是比较一个整数。这是计算机可以做的最基本的事情之一:iOS设备中的CPU能够在比一秒钟更短的时间内运行许多数千的这种比较。所以你没有理由担心。
现在,随着您构建游戏,您可能会发现自己正在扩展并向此方法添加内容,在这种情况下,性能可能会成为一个问题。最好的办法是,正如上面的评论之一所示,只需构建您的游戏并查看它是否成为问题。考虑性能总是好的,但同时在不需要的时候可以坏进行优化。
答案 2 :(得分:0)
在您的描述中,您应该可以在UIKit中制作它。 SpriteKit适用于高性能游戏,需要比简单的纸牌游戏更强大的计算能力。您正在谈论的游戏类型不高性能。大多数处理能力来自模拟中的数字运算,但这真的是关于它的。
如果您需要更新分数,您可以使用简单的didSet或类似的东西。您也可以尝试使用计时器,但我认为使用简单的didSet将是一个简单的解决方案,因为它会在您获取并设置变量时自动更改。如果我向变量添加一个,Xcode会自动使用didSet为我更新分数。我不知道你游戏的所有细节,所以只需先在UIKit中试一试(花费更少的时间)。如果它很慢,那就转到SpriteKit。
我会将文档链接到didSet给你。如果您是文档阅读器类型,请尝试hackingWithSwift。两者都是不错的选择:
"将在存储值之前调用willSet。 存储新值后立即调用didSet。"
如果您想阅读更多内容,请点击链接...