.sks
文件是场景内容的静态存档。如果您以前使用过Interface Builder来设置UI应用程序,那么它的思路也是一样的,如果在实现上有所不同的话。
在UI的应用程序,你可以在代码中所做的一切:
override func viewDidLoad() {
let someText = UITextField(...)
let aButton = UIButton(...)
// ... position everything
// ... style everything
// ... etc ...
}
或者你可以做IB所有的静态内容设置(一XIB或情节串连图板),并且只用于建立动态使用代码你的应用程序的行为 - 当有人开始触摸这些按钮时发生的事情。当你这样做时,你编写代码的视图控制器作为代理对象存在于xib/storyboard中,在你在IB中设置的内容和代码中设置的内容之间架起一座桥梁。
在SpriteKit中,您有相同的选择。 Xcode的6之前,许多SK游戏把所有的代码方法:
override func didMoveToView(view: SKView) {
let player = PlumberSprite(color: .Red)
player.position = // ...
player.physicsBody = // ...
self.addChild(player)
let ground = SKSpriteNode(...)
ground.position = // ...
ground.physicsBody = // ...
self.addChild(ground)
let block = QuestionBlockSprite()
block.position = // ...
block.physicsBody = // ...
block.contents = CoinSprite()
self.addChild(block)
// ... etc etc etc ...
}
这是一个很大的什么是最终的图形,静态场景码 - 你开始添加代码,使之成为一个游戏,甚至之前(输入处理,敌人的行为,增加分数或去游戏结束的物理回调等)。而且它不适合设计从内容中分离出一般游戏逻辑的地方,因此很难在游戏中添加多个关卡。相反,您可以使用Xcode中的SpriteKit编辑器来构建您的静态内容(级别),并坚持用于动态行为和游戏逻辑的代码。就像在IB中视图控制器是你的故事板和你的代码之间的桥梁一样,你的场景类(模板中的GameScene.swift
)是编辑器和代码之间的桥梁。当您在运行时加载.sks
文件(代码为模板中的GameViewController.swift
)时,它将成为GameScene
类的一个实例,您在编辑器中设置的任何内容都可以作为场景的子节点进行访问。
检查WWDC会谈是一个好主意,但是您错过了一个涵盖此内容的主题:请参阅session 608: Best Practices for Building SpriteKit Games以获取更多关于SpriteKit编辑器背后的动机,如何使用它以及如何处理从您场景代码中的.sks
文件。
非常好!该视频的前20分钟正是我需要的! – 2014-11-05 23:00:55
我发现.sks文件有一点限制。它有时似乎会丢失我添加的对象,有时它会恢复我所做的更改(模拟与编辑模式)。没有图层视图,我不知道这个.sks文件是多么有用,除非Apple添加更多功能。您必须向前和向后推节点才能处理复杂的层次结构。 – 2015-01-28 17:01:53