SpriteKit框架之鴻蒙初辟



SpriteKit框架簡介


Sprite Kit是一個從iOS7系統(tǒng)開始提供的一個2D游戲框架,在發(fā)布時被內置于iOS 7 SDK中.Sprite Kit中的對象被稱為"材料對象"(簡稱Sprite),支持入視頻,濾鏡,遮罩等特效,并且內置了物理引擎庫.


SpriteKit框架優(yōu)點和缺點


在iOS平臺中,通過Sprite Kit制作2D游戲有以下三個優(yōu)點.

  • 沒至于iOS,因此不需要再人外下載類庫也不會產生外部依賴,他是拼過官方編寫的,所以可以確信它會被良好支持和持續(xù)更新.
  • 為紋理貼紙集合粒子提供了內置的工具.
  • 可以讓你做一些用其他框架河南甚至不可能做到的事情,比如把視頻當做Sprite來使用或者實現很炫的圖片效果和遮罩.
同時,通過Sprite Kit制作2D游戲也有以下三個缺點.
  • 如果使用了Sprite Kit框架,那么游戲就會被限制在iOS系統(tǒng)上.可能永遠也不會知道自己的游戲是否會在Android平臺上變成熱門.
  • 因為Sprite Kit框架剛剛起步,所以,現階段坑你沒有其他框架那么多的釋永信,比如Cocos2D的某些細節(jié)功能.
  • 不能直接編寫OpenGL代碼.


SpriteKit框架的Hello World


看到上面對SpriteKit的介紹,我們對SpriteKit框架有了大體的了解,那么接下來就來進行我們的SpriteKit框架的Hello World吧!

首先,打開Xocde.command+Shift + N創(chuàng)建一個新的Game工程.

設置一下屏幕支持方向(可不設置),然后直接command +R運行一下看一下運行效果.

演示圖

上面只是系統(tǒng)自帶的Hello World,我的世界豈容他人主宰?我們需要自己改造自己的世界.那么首先要改造我們的游戲世界,就要先了解這個游戲世界的構成.main函數以及AppDelegate就不說了,跟OC其他的一樣.說下游戲的主入口GameViewController這個類.

首先在GameViewController的.h中導入了SpriteKit的框架.接下來看一下GameViewController的 - (void)viewDidLoad 方法都進行了什么操作.如下代碼.注釋都加的很詳細了,很簡單就是在方法中顯示FPS的值已經精靈個數,添加上GameScene這個場景.

- (void)viewDidLoad
{
    [super viewDidLoad];

    SKView * skView = (SKView *)self.view;

    skView.showsFPS = YES;//展示FPS值

    skView.showsNodeCount = YES;//顯示精靈個數

    skView.ignoresSiblingOrder = YES;//設置層次
    
    GameScene *scene = [GameScene nodeWithFileNamed:@"GameScene"];

    scene.scaleMode = SKSceneScaleModeAspectFill;
   
    [skView presentScene:scene];//添加場景
}

了解完GameViewController之后,我們就要著手改造我們的游戲世界了,我們需要創(chuàng)建一個SKScene對象(場景),SKScene對象就類似于OC中的View,是一個視圖,但是在SpriteKit中叫場景.如圖所示.

創(chuàng)建完成場景之后,我們在GameViewController里面添加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];
}

模擬器器展示效果如下

上面的場景就是空的白板,現在我們就需要重寫場景中的初始化方法,添加我們的第一個精靈SKSpriteNode對象,完成我們的Hello World.

代碼如下.

-(instancetype)initWithSize:(CGSize)size{

    if (self = [super initWithSize:size]) {
        
        self.backgroundColor = [SKColor lightGrayColor];//設置背景顏色
        
        SKSpriteNode *helloNode = [SKSpriteNode spriteNodeWithImageNamed:@"helloWorld.png"];//用圖片初始化精靈
        
        helloNode.position = CGPointMake(CGRectGetMidX(self.frame),
                                         CGRectGetMidY(self.frame));//設置精靈的position
        
        [self addChild:helloNode];//把精靈添加到場景上
        
        
    }

    return self;

}

演示效果圖
注意:上面的代碼中設置場景的背景色用到了SKColor,這其實是一個宏,在iOS就對應UIColor,在OS X則對應的是NSColor.


小結


這篇博客僅僅是SpriteKit游戲開發(fā)的開始,后面我會對SpriteKit框架中的技術點逐一探討,最后附上Demo.完成此次SpriteKit框架的HelloWorld之路.

-->SpriteKit框架HelloWorld的Demo ??
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 寫在前面: 游戲開發(fā)菜鳥,本帥哥也是第一次研究SpriteKit,有很多都不懂,另外本文轉自王巍老師的博客點擊進入...
    CoderZNB閱讀 4,354評論 4 19
  • Translate form http://www.raywenderlich.com/84434/sprite-...
    CenturyGuo閱讀 2,240評論 1 11
  • 在iOS中框架是一個目錄,包含了共享資源庫,用于訪問該資源庫中儲存的代碼的頭文件,以及圖像、聲音文件等其他資源。共...
    ch123閱讀 1,845評論 0 1
  • 轉自:iOS框架和服務 框架簡介 一、什么是系統(tǒng)框架 在iOS中框架是一個目錄,包含了共享資源庫,用于訪問該資源庫...
    淇濱杜隆坦閱讀 1,506評論 0 8
  • 今天的案例也是針對回答“若寧家育兒群“里的一位媽媽的提問進行的解答。經過這位媽媽的同意,我們將它編寫成案例,...
    張忻閱讀 1,755評論 0 1

友情鏈接更多精彩內容