iOS SpriteKit教程

时间:2020-02-23 14:45:55  来源:igfitidea点击:

在本教程中,我们将讨论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.
  }

}

我们已经设置了缩放模式以填满整个屏幕。