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

3.3 显示精灵

显示精灵其实我们在第二章中就已经接触过了。本节我们将详细地讲解显示精灵的两种方法:第一种是使用场景编辑器显示精灵;第二种是使用代码显示精灵。

3.3.1 使用场景编辑器显示精灵

使用场景编辑器显示精灵是非常简单的,也是游戏开发者经常使用的一种方式。使用场景编辑器显示精灵的具体步骤如下:

(1)创建一个Game的项目,命名为3。

(2)将设备的方向设置为水平方向。

(3)单击打开GameScene.sks文件,打开场景编辑器,如图3.4所示。

图3.4 场景编辑器

(4)在Show the Object library即对象库中找到Color Sprite对象,将其拖动到场景中,如图3.5所示。

图3.5 拖动到场景中

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

图3.6 运行效果

在场景中出现的红色方块就是精灵。此精灵为无纹理精灵。

注意:通过Show the SKNode inspector面板中的内容可以对精灵的属性进行设置。如果想要将精灵的颜色设置为黑色,就需要找到Color选项,将此选项中的内容设置为黑色,如图3.7所示。

图3.7 属性设置

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

图3.8 运行效果

在图3.6和图3.8中看到的方块都是无纹理的精灵,那么纹理精灵该如何进行显示呢?以下将为开发者解决这一问题。

(1)添加一个图像1.png到创建项目的Supporting Files文件夹中。

(2)打开GameScene.sks文件,选择Color Sprite对象。回到Show the SKNode inspector面板中,找到Texture选项,将此项设置为添加的图像即1.png,如图3.9所示。

图3.9 属性设置

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

图3.10 运行效果

注意:在图3.10中出现的一个可爱的小猫脸就是纹理精灵。

3.3.2 使用代码显示无纹理的精灵

使用代码显示无纹理精灵需要使用到以下两步:

1.创建无纹理的精灵

创建无纹理精灵也就是实例化一个精灵对象,需要使用到init()方法。此方法的功能是初始化一个具有颜色的精灵,常用于无纹理精灵,其语法形式如下:

convenience init(color color: UIColor!, size size: CGSize)

其中,color用来指定精灵的颜色,size用来指定精灵的尺寸。

2.添加无纹理精灵

单单只创建好精灵还是无法将精灵显示出来,需要调用addChild()方法。此方法的功能是将精灵添加到场景中,其语法形式如下:

func addChild(_ node: SKNode)

其中,_ node用来指定添加到场景中的节点。

【示例3-1】以下将实现在一个场景中显示无纹理精灵的功能,具体操作步骤如下:

(1)创建一个Game类型的项目,命名为3-0。

(2)将设备的方向设置为水平方向。

(3)打开GameScene.swift文件,将此文件中多余的代码删除,然后编写新的代码,此代码实现的功能是显示一个无纹理精灵到场景中。代码如下:

import SpriteKit
class GameScene: SKScene {
    override func didMoveToView(view: SKView) {
        var splash=SKSpriteNode(color: SKColor.blueColor(), size:
        CGSizeMake(500, 500))       //创建精灵
        self.addChild(splash)       //添加精灵
    }
}

注意:在Game类型的项目,由于GameViewController.swift文件中实现的代码就是用来显示GameScene场景的,所以不需要改变此文件中的代码。同时由于模拟器上显示的第一个场景为GameScene场景,为了方便代码编写,不对此文件中的代码进行改变。

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

图3.11 运行效果

3.3.3 使用代码显示纹理精灵

使用代码显示纹理精灵同样需要使用两步,即创建纹理精灵以及添加纹理精灵。

1.创建纹理精灵

创建纹理精灵同样也需要实例化一个精灵对象,此时需要使用到init()方法。此方法的功能是使用图像初始化一个纹理精灵,其语法形式如下:

convenience init(imageNamed name: String)

其中,name用来指定图像文件。

2.添加纹理精灵

创建好精灵后如果想要进行显示,还需要调用addChild()方法。

【示例3-2】以下将实现在一个场景中显示纹理精灵的功能,具体操作步骤如下:

(1)创建一个Game类型的项目,命名为3-1。

(2)添加图像1.jpg到创建项目的Supporting Files文件夹中。

(3)将设备的方向设置为水平方向。

(4)打开GameScene.swift文件,将此文件中多余的代码删除,然后编写新的代码,此代码实现的功能是显示一个精灵到场景中。代码如下:

import SpriteKit
class GameScene: SKScene {
    override func didMoveToView(view: SKView) {
        var splash=SKSpriteNode(imageNamed:"1.jpg")                     //创建精灵
        self.addChild(splash)                                           //添加精灵
    }
}

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

图3.12 运行效果