SpriteKit框架之SKTextureAtlas

耐力显晶,是一種不顯山露水的執(zhí)著;是一種不懼風(fēng)不畏雨的堅(jiān)忍;是一種不圖名不圖利的忠誠贞铣。


紋理及其紋理集的簡介


SpriteKit框架之淺談SKNode及SKSpriteNode 這一篇文章中,曾經(jīng)說到SKSpriteNode對(duì)象的創(chuàng)建方式一共是有兩種的,一種是直接使用屠屏或者圖片名稱創(chuàng)建,一種是使用則是使用紋理創(chuàng)建,其實(shí)相比直接使用圖片名稱創(chuàng)建,使用紋理創(chuàng)建精靈更加的麻煩,但是為什么還是要有紋理這個(gè)創(chuàng)建精靈的方法呢?因?yàn)榧y理一般是配合著紋理集使用的. 一個(gè)紋理集實(shí)例是一個(gè)相關(guān)的紋理的集合胜蛉。它是通過一個(gè)保存在app包中的紋理集來加載的款筑。使用紋理集可以使紋理的加載和使用更加高效。例如腾么,如果你有一個(gè)屏幕需要繪制不同的紋理奈梳,Sprite Kit分開繪制這些紋理。如果所有的這些紋理來自同一個(gè)紋理集解虱,那么Sprite Kit可以一次就把這些紋理全部繪制完攘须。每當(dāng)你有一些紋理總是在一起繪制,你應(yīng)該把它們加到一個(gè)紋理集中.

例如下面的游戲素材中,如果我們一個(gè)一個(gè)的繪制,不僅會(huì)造成時(shí)間的浪費(fèi)而是還有空間的浪費(fèi).時(shí)間的浪費(fèi)就是來源于程序是一張一張圖片的繪制,而使用紋理集是一次性把所有的圖片繪制完成.那么空間上浪費(fèi)呢?由于使用紋理集繪制紋理是把所有圖片一次性繪制完成的,而且是繪制在一張圖片上,把很多的空間充分的利用.所以說這樣占用的空間更小.


SKTextureAtlas的使用


對(duì)于紋理圖集殴泰,那你可以把它想象為一副很大的圖片于宙,其中包括動(dòng)畫中需要使用到的各種圖片。這個(gè)圖集可以看做是一個(gè)文件悍汛,它指定了每個(gè)sprite的邊界范圍捞魁,當(dāng)在代碼中需要使用時(shí),可以將這些sprite取出來离咐。下面我們就拿一個(gè)炸彈爆炸效果的來看一下紋理集是怎么使用的.

首先,我們需要?jiǎng)?chuàng)建一個(gè)后綴為.atlas文件夾并把所有的圖片素材添加進(jìn)去.這樣Xcode就能識(shí)別出.atlas擴(kuò)展名谱俭,進(jìn)而自動(dòng)的將圖片合并為一個(gè)紋理圖集。如圖所示.

接下來把紋理文件夾添加到工程當(dāng)中.

上面已經(jīng)把紋理集添加到工程中了,萬事俱備只欠東風(fēng),接下來在工程中新建一個(gè)名為GameScene的場景.然后創(chuàng)建一個(gè)SKTextureAtlas對(duì)象,代碼如下.

    SKTextureAtlas *iOSTextureAtlas = [SKTextureAtlas atlasNamed:@"iOS"];

紋理集創(chuàng)建完成了,該如何使用呢?SKTextureAtlas有一個(gè)屬性叫做textureNames,是一個(gè)數(shù)組類型,數(shù)組存儲(chǔ)的是各個(gè)紋理的名稱,我們可以通過這個(gè)數(shù)組取出對(duì)應(yīng)的紋理,因?yàn)槲覀円谱饕粋€(gè)爆炸效果,所以我們要把所有的紋理取出來.我們新建一個(gè)可變數(shù)組來接受所有的紋理.代碼如下.

    NSMutableArray *allTextureArray = [NSMutableArray arrayWithCapacity:16];
    
    for (int i = 0; i < iOSTextureAtlas.textureNames.count; i++) {
        
        NSString *textureName = [NSString stringWithFormat:@"image%d.png",i*2+20];
        
        SKTexture *texture = [iOSTextureAtlas textureNamed:textureName];
        
        [allTextureArray addObject:textureName];
    
    }

現(xiàn)在allTextureArray中存儲(chǔ)了所有的紋理對(duì)象,接下來,我們就創(chuàng)建一個(gè)SKSpriteNode對(duì)象,并且給它添加上動(dòng)畫,代碼如下.

    SKSpriteNode *bombNode = [SKSpriteNode spriteNodeWithTexture:allTextureArray[0]];
    
    bombNode.position = CGPointMake(self.size.width/2, self.size.height/2);
    
    bombNode.anchorPoint = CGPointMake(0.5, 0.5);
    
    [self addChild:bombNode];
    
    //爆炸效果動(dòng)畫
    SKAction *animationAction = [SKAction animateWithTextures:allTextureArray timePerFrame:0.08];
    
    //repeatActionForever這個(gè)動(dòng)作的效果是讓動(dòng)畫重復(fù)執(zhí)行.
    [bombNode runAction: [SKAction repeatActionForever:animationAction]];

我們看一下工程運(yùn)行之后的效果圖.


SpriteKit框架中的SKTextureAtlas相關(guān)內(nèi)容就說到這了,最后雙手奉上本文中的Demo,希望對(duì)其學(xué)習(xí)過程中有所幫助.謝謝
-->SKTextureAtlas的使用??
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末宵蛀,一起剝皮案震驚了整個(gè)濱河市昆著,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌术陶,老刑警劉巖凑懂,帶你破解...
    沈念sama閱讀 216,919評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異梧宫,居然都是意外死亡接谨,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門塘匣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來脓豪,“玉大人,你說我怎么就攤上這事馆铁∨苋啵” “怎么了?”我有些...
    開封第一講書人閱讀 163,316評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長历谍。 經(jīng)常有香客問我现拒,道長,這世上最難降的妖魔是什么望侈? 我笑而不...
    開封第一講書人閱讀 58,294評(píng)論 1 292
  • 正文 為了忘掉前任印蔬,我火速辦了婚禮,結(jié)果婚禮上脱衙,老公的妹妹穿的比我還像新娘侥猬。我一直安慰自己,他們只是感情好捐韩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評(píng)論 6 390
  • 文/花漫 我一把揭開白布退唠。 她就那樣靜靜地躺著,像睡著了一般荤胁。 火紅的嫁衣襯著肌膚如雪瞧预。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,245評(píng)論 1 299
  • 那天仅政,我揣著相機(jī)與錄音垢油,去河邊找鬼。 笑死圆丹,一個(gè)胖子當(dāng)著我的面吹牛滩愁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播辫封,決...
    沈念sama閱讀 40,120評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼硝枉,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了秸讹?” 一聲冷哼從身側(cè)響起檀咙,我...
    開封第一講書人閱讀 38,964評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎璃诀,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蔑匣,經(jīng)...
    沈念sama閱讀 45,376評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡劣欢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了裁良。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凿将。...
    茶點(diǎn)故事閱讀 39,764評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖价脾,靈堂內(nèi)的尸體忽然破棺而出牧抵,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,460評(píng)論 5 344
  • 正文 年R本政府宣布犀变,位于F島的核電站妹孙,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏获枝。R本人自食惡果不足惜蠢正,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望省店。 院中可真熱鬧嚣崭,春花似錦、人聲如沸懦傍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽粗俱。三九已至说榆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間源梭,已是汗流浹背娱俺。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留废麻,地道東北人荠卷。 一個(gè)月前我還...
    沈念sama閱讀 47,819評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像烛愧,于是被迫代替她去往敵國和親油宜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,090評(píng)論 25 707
  • iOS 蘋果官方Demo合集 字?jǐn)?shù)10517閱讀21059評(píng)論18喜歡144 其實(shí), 開發(fā)了這么久, 不得不說, ...
    bingo居然被占了閱讀 10,140評(píng)論 2 31
  • 在iOS中框架是一個(gè)目錄怜姿,包含了共享資源庫慎冤,用于訪問該資源庫中儲(chǔ)存的代碼的頭文件,以及圖像沧卢、聲音文件等其他資源蚁堤。共...
    wo不懂閱讀 1,421評(píng)論 3 3
  • 天地清澈 你的眼無邊遼闊 將遠(yuǎn)方踩在腳下 攀上這高原盡頭 太陽哺乳萬物 你的心納盡百川 風(fēng)吹動(dòng)的聲音 傳達(dá)到下一個(gè)...
    在山中的李老師閱讀 740評(píng)論 3 1
  • 已是黃昏獨(dú)自愁 更著風(fēng)和雨 要么飛揚(yáng) 要么沉寂 物是人非事事休 欲語淚先流 鳥兒歌聲漸遠(yuǎn) 孤夜伴舞華燈...
    丹丹zjp閱讀 305評(píng)論 0 0