iOS SpriteKit教程
在本教程中,我们将讨论SpriteKit,并使用Swift从中构建一个Hello World iOS应用程序。
入门
SpriteKit是一个框架,用于在渲染图形和动画纹理的同时创建高性能2D游戏。
SpriteKit具有优化的动画系统,并增强了物理效果,非常适合制作引人入胜的2D游戏。
要开始使用SpriteKit Game Project,请启动XCode并选择Game模板,如下所示:
在下一个屏幕上,确保选择SpriteKit。
XCode构建完项目后,您会在"项目"面板中看到许多生成的文件。
其中包括GameScene.swift,.sks文件和GameViewController。
该代码乍一看可能令人生畏。
别担心,我们会先从SpriteKit基础知识开始,然后再延伸到那里。
在模拟器或者设备上生成并运行该应用程序。
以下是输出:
这就是创建的示例Hello World SpriteKit应用程序。
但这就是XCode的全部魔力。
让我们从零开始,介绍重要的概念和术语,并构建我们的SpriteKit Hello World应用程序版本。
SpriteKit的基础
精灵不过是动画纹理图像。
SpriteKit包含以下重要类:
SKView:这是UIView的子类。
SKView是其中添加了所有SpriteKit内容并在屏幕上显示的视图。SKNode:这是SpriteKit的构建块。
它只是一个空节点。
没有视觉元素。
在SKNode上,我们可以添加子节点,例如SKSpriteNode。
这些节点可以是视觉元素或者场景。SKScene:SKScene是SKNode的子类。
它代表了游戏中的一个场景。
SKScene充当SKNode的根节点。
SKScene将内容提供给SKView。
您只需要在SKView上调用函数presentScene并传递场景实例。SKAction:SKAction用于设置动作,例如SKNode上的动画/运动。
SKPhysicsBody:此类将物理组件添加到SKNodes。
游戏中通常使用重力,碰撞等组件。
SKScene的原点位于左下角。
现在创建一个新的XCode项目并选择单视图应用程序。
我们将从头开始构建SpriteKit项目。
转到MainStoryboard并将自定义类类型设置为SKView。
右键单击项目文件夹,然后选择SpriteKitScene类型的新文件,如下所示:我们将文件命名为HelloScene.sks。
这是它的布局编辑器:
现在,我们需要创建一个" HelloScene.swift"文件,以与上述SK场景文件连接。
创建类型为Cocoa Touch类的新文件,然后选择以下类类型作为父类:
HelloScene.swift文件如下所示:
确保已其中导入SpriteKit模块。
现在是时候在场景布局编辑器中连接该场景文件了:
添加精灵
要从布局编辑器添加一个精灵,我们要做:
我们可以将任何文件路径添加到此Color Sprite上Assets文件夹中的图像中。
现在,让我们保持空白。
以编程方式添加Sprite。
为此,需要在HelloScene.swift文件中,将子节点添加到被覆盖的didMove()函数中。
import SpriteKit
class HelloScene: SKScene {
override func didMove(to view: SKView) {
let label = SKLabelNode()
label.text = "Hello World!"
label.position = CGPoint(x: self.frame.midX, y: self.frame.midY)
label.fontSize = 30
label.fontColor = SKColor.red
self.addChild(label)
}
}
我们添加了一个SKLabelNode,其中显示了带有文字的Sprite。
必须为SKLabelNode分配一个位置,否则将其放置在屏幕的左下方。
我们将其居中并设置了字体和大小。
最后,我们使用addChild()将SKLabelNode添加到SKScene中
从我们的ViewController运行SKScene
现在,我们需要将SKScene添加到ViewController.swift文件中。
其中,我们将场景呈现给SKView:
import UIKit
import SpriteKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//Do any additional setup after loading the view, typically from a nib.
if let view = self.view as? SKView
{
if let scene = SKScene(fileNamed: "HelloScene")
{
scene.scaleMode = .aspectFill
view.presentScene(scene)
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
//Dispose of any resources that can be recreated.
}
}
我们已经设置了缩放模式以填满整个屏幕。

