iOS游戏框架Sprite Kit技术详解
上QQ阅读APP看书,第一时间看更新

2.2 显示新增的场景

在2.1节中,添加新场景后,这时的新场景是不可以显示在设备的屏幕中的,那么如何将新增的场景显示在屏幕中呢?这就是本节将要讲解的内容。

1.创建场景

创建场景也就是所谓的实例化对象。由于每一个场景都是基于SKScene类的,所以每一个场景都有一个通用的实例化对象的方法,其语法形式如下:

init(size size: CGSize)

其中,size是场景对象的尺寸,即大小。

2.显示场景

创建好场景后,此时运行程序,新添加的场景还是无法显示的。如果想要将新的场景进行显示,需要使用presentScene(_ scene: SKScene?)方法,此方法用来显示一个场景,其语法形式如下:

func presentScene(_ scene: SKScene?)

其中,_ scene用来表示需要显示的场景。

【示例2-1】以下将以项目2-1为基础,将添加的新的场景显示在屏幕上,具体操作步骤如下:

打开GameViewController.swift文件,删除GameViewController.swift文件中的部分代码。此时剩余的代码如下:

import UIKit
import SpriteKit
class GameViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

在viewDidLoad()方法中添加以下的代码,此代码实现的功能就是将新添加的场景显示在屏幕上:

override func viewDidLoad() {
    super.viewDidLoad()
    let skView = self.view as! SKView
    //判断skView的scene属性是否为空
    if(skView.scene == nil){
        skView.showsFPS=true
        skView.showsNodeCount=true
        let scene=NewGameScene(size: skView.bounds.size)    //创建场景
        skView.presentScene(scene)                                      //显示场景
    }
}

此时运行程序,会看到如图2.8所示的效果。

图2.8 运行效果

注意:SKView类是专门用来呈现Sprite Kit的View。在此类中可以渲染和管理一个SKScene。每个Scene中可以加载多个精灵,并管理它们的行为。