14.精靈進階之幹活篇下,14精靈進階幹活

來源:互聯網
上載者:User

14.精靈進階之幹活篇下,14精靈進階幹活
14.精靈進階之幹活篇下

首先請允許為我們的團隊部落格Optional Swift 介紹一番,提供swift基礎入門教程講解,架構學習,UI設計,控制項學習等等

optional swift team 部落格地址

前文有提供了一種建立紋理的構造方法,具體是怎麼實現的呢?Sprite Kit首先是通過明確的檔案名稱來尋找圖片檔案(非紋理圖集),假如沒有找到,那麼它將遍曆app bundle中的所有紋理圖集。這意味著遊戲項目中,你無需對代碼做出更改來支援這種情況。當你設計完圖片,往紋理圖集一扔即可,它將自動包含,你不要重新build

接下來討論SKTextureAtlas,當你想要明確對某一個紋理圖集進行操作,那麼使用它再好不過!首先建立一個紋理繪圖物件(texture atlas object);接下來,使用紋理的名字來添加到剛才建立的紋理圖集中。下面的例子是有實際開發意義的,怪物的行走就是通過一個紋理圖集(包含多張紋理,玩過gif的朋友應該知道,其實gif也就是由多張連續圖片組成)來Animate的。假象在我們實際的工程中,我們已經添加了一個monster.atlas檔案夾,裡面有4張圖片,實現代碼如下:

    //建立紋理圖集    let atlas = SKTextureAtlas(named: "monster")    //建立紋理    let f1 = atlas.textureNamed("monster-walk1")    let f2 = atlas.textureNamed("monster-walk2")    let f3 = atlas.textureNamed("monster-walk3")    let f4 = atlas.textureNamed("monster-walk4")    //建立一個數組包含  f1 f2 f3 f4屬於atlas這個圖集的    let monsterWalkTextures = [f1,f2,f3,f4]

註:
一幀就是一張圖片!

建立紋理方式二

首先再次聊到紋理,就是可複用圖片,我們多次用到了SKTexture來建立一個紋理,非常酷!本節介紹另外一種方法,說來也有點意思,既然紋理是一張圖片,我們是否可以截取圖片的”一角”來建立新的紋理呢?答案自然是肯定的,建立的紋理類型依然是SKTexture,代碼如下:

    //cornerTextures 類型是SKTexture    let bottomLeftTexture = SKTexture(rect: CGRectMake(0.0, 0.0, 0.5, 0.5), inTexture: cornerTextures)
讓精靈動起來!

精靈(Sprite)的紋理屬性(texture)指向當前紋理(即當前賦予的)!覺得單調?換掉它!這樣精靈的紋理屬性就指向了我們喜歡的紋理了。下一次情境進行渲染時,就會改成新的紋理。不過,任何時候替換成新的紋理,我們可能還需要對其他屬性進行設定,例如:sizeanchorPointcenterRect。通常我們最好保證設計好的一套紋理圖冊中的圖片大小都是一致的,我可不想遊戲中人物形象忽大忽小搞的像變身似的~

下面來讓我們的怪物動起來!這一下子讓人聯想到Action,要知道我們的紋理圖冊其實就是一些連續的圖片。我們建立這麼一個動作,可以讓其有序的切換圖片,不就是在播放動作了嗎?

你可以這麼玩,當然假如你的朋友和你夠鐵的話….
和他視頻,然後狂按截屏,來個百來張,開啟個儲存的檔案夾,然後一張張切換看,不就是一個動畫嗎(除非他不動~)?這個和我們異曲同工。接下來是代碼。

//這樣建立一個動作 每隔0.1秒換一張紋理 當然我們傳入的是一個紋理數組,內部怎麼做不關心let walkAnimation = SKAction.animateWithTextures(monsterWalkTextures, timePerFrame: 0.1)//讓精靈動起來monster.runAction(walkAnimation)
辦完正事紋理走開!

要知道圖形硬體將紋理載入到記憶體之後,是始終儲存著的,直到SKTexture對象被刪除。所以在刪除的時候我們必須考慮很多,因為那些對它具有強引用的對象都要受此(刪除)影響!具體包括:

  • 引用了該紋理的所有 SKSpriteNodeSKEffectNode 對象
  • 代碼中對該紋理具有強引用(strong references)關係的所有東東
  • SKTextureAtals對象自然也不用說 ,還不是包含了這個紋理的原因哈

結尾:
本節對紋理進一步瞭解,我認為要對概念理解透徹,至於應用非常簡單,所以不用擔心。
接下來是對Action的展開討論!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.