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. } }
我们已经设置了缩放模式以填满整个屏幕。