
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 运行效果