SpriteKit框架簡(jiǎn)介
Sprite Kit是一個(gè)從iOS7系統(tǒng)開始提供的一個(gè)2D游戲框架,在發(fā)布時(shí)被內(nèi)置于iOS 7 SDK中.Sprite Kit中的對(duì)象被稱為"材料對(duì)象"(簡(jiǎn)稱Sprite),支持入視頻,濾鏡,遮罩等特效,并且內(nèi)置了物理引擎庫.
SpriteKit框架優(yōu)點(diǎn)和缺點(diǎn)
在iOS平臺(tái)中,通過Sprite Kit制作2D游戲有以下三個(gè)優(yōu)點(diǎn).
沒至于iOS,因此不需要再人外下載類庫也不會(huì)產(chǎn)生外部依賴,他是拼過官方編寫的,所以可以確信它會(huì)被良好支持和持續(xù)更新.
為紋理貼紙集合粒子提供了內(nèi)置的工具.
可以讓你做一些用其他框架河南甚至不可能做到的事情,比如把視頻當(dāng)做Sprite來使用或者實(shí)現(xiàn)很炫的圖片效果和遮罩.
同時(shí),通過Sprite Kit制作2D游戲也有以下三個(gè)缺點(diǎn).
如果使用了Sprite Kit框架,那么游戲就會(huì)被限制在iOS系統(tǒng)上.可能永遠(yuǎn)也不會(huì)知道自己的游戲是否會(huì)在Android平臺(tái)上變成熱門.
因?yàn)镾prite Kit框架剛剛起步,所以,現(xiàn)階段坑你沒有其他框架那么多的釋永信,比如Cocos2D的某些細(xì)節(jié)功能.
不能直接編寫OpenGL代碼.
SpriteKit框架的Hello World
看到上面對(duì)SpriteKit的介紹,我們對(duì)SpriteKit框架有了大體的了解,那么接下來就來進(jìn)行我們的SpriteKit框架的Hello World吧!
首先,打開Xocde.command+Shift + N創(chuàng)建一個(gè)新的Game工程.
設(shè)置一下屏幕支持方向(可不設(shè)置),然后直接command +R運(yùn)行一下看一下運(yùn)行效果.
上面只是系統(tǒng)自帶的Hello World,我的世界豈容他人主宰?我們需要自己改造自己的世界.那么首先要改造我們的游戲世界,就要先了解這個(gè)游戲世界的構(gòu)成.main函數(shù)以及AppDelegate就不說了,跟OC其他的一樣.說下游戲的主入口GameViewController這個(gè)類.
首先在GameViewController的.h中導(dǎo)入了SpriteKit的框架.接下來看一下GameViewController的 - (void)viewDidLoad
方法都進(jìn)行了什么操作.如下代碼.注釋都加的很詳細(xì)了,很簡(jiǎn)單就是在方法中顯示FPS的值已經(jīng)精靈個(gè)數(shù),添加上GameScene這個(gè)場(chǎng)景.
- (void)viewDidLoad
{
[super viewDidLoad];
SKView * skView = (SKView *)self.view;
skView.showsFPS = YES;//展示FPS值
skView.showsNodeCount = YES;//顯示精靈個(gè)數(shù)
skView.ignoresSiblingOrder = YES;//設(shè)置層次
GameScene *scene = [GameScene nodeWithFileNamed:@"GameScene"];
scene.scaleMode = SKSceneScaleModeAspectFill;
[skView presentScene:scene];//添加場(chǎng)景
}
了解完GameViewController之后,我們就要著手改造我們的游戲世界了,我們需要?jiǎng)?chuàng)建一個(gè)SKScene對(duì)象(場(chǎng)景),SKScene對(duì)象就類似于OC中的View,是一個(gè)視圖,但是在SpriteKit中叫場(chǎng)景.如圖所示.
創(chuàng)建完成場(chǎng)景之后,我們?cè)贕ameViewController里面添加MainSence,如下代碼.
#import "GameViewController.h"
#import "MainScene.h"
#define KMainHeight self.view.frame.size.height
#define KMainWidth self.view.frame.size.width
@implementation GameViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Configure the view.
SKView * skView = (SKView *)self.view;
skView.showsFPS = YES;
skView.showsNodeCount = YES;
/* Sprite Kit applies additional optimizations to improve rendering performance */
skView.ignoresSiblingOrder = YES;
MainScene *mainScene = [[MainScene alloc]initWithSize:CGSizeMake(KMainWidth, KMainHeight)];
// Present the scene.
[skView presentScene:mainScene];
}
模擬器器展示效果如下
上面的場(chǎng)景就是空的白板,現(xiàn)在我們就需要重寫場(chǎng)景中的初始化方法,添加我們的第一個(gè)精靈SKSpriteNode對(duì)象,完成我們的Hello World.
代碼如下.
-(instancetype)initWithSize:(CGSize)size{
if (self = [super initWithSize:size]) {
self.backgroundColor = [SKColor lightGrayColor];//設(shè)置背景顏色
SKSpriteNode *helloNode = [SKSpriteNode spriteNodeWithImageNamed:@"helloWorld.png"];//用圖片初始化精靈
helloNode.position = CGPointMake(CGRectGetMidX(self.frame),
CGRectGetMidY(self.frame));//設(shè)置精靈的position
[self addChild:helloNode];//把精靈添加到場(chǎng)景上
}
return self;
}
注意:上面的代碼中設(shè)置場(chǎng)景的背景色用到了SKColor,這其實(shí)是一個(gè)宏,在iOS就對(duì)應(yīng)UIColor,在OS X則對(duì)應(yīng)的是NSColor.
小結(jié)
這篇博客僅僅是SpriteKit游戲開發(fā)的開始,后面我會(huì)對(duì)SpriteKit框架中的技術(shù)點(diǎn)逐一探討,最后附上Demo.完成此次SpriteKit框架的HelloWorld之路.