xcode7.3中使用SpriteKit開發遊戲時如何使用atlasc貼圖集(使用TexturePacker產生)
因為要使用的資源檔是一組小的圖片, 我們需要先將其產生一張大的圖片,將所有小圖片都包含在其中, 最好的方式是使用第三方工具來實現這個功能。
1. 首先下載TexturePacker 寫該文章時最新的版本是4.1.0
為:https://www.codeandweb.com/blog/2013/09/23/spritekit-animations-and-textureatlases
2. 啟動TexturePacket拖動自己準備好的圖片,直接拖動到工作區, 他會自動變成一張圖片。
我這裡面做了10個數位圖片,拖到工程中後效果如下:
3. 拖入資源檔後, 需要選擇一下資料格式, 因為我用的是蘋果自己的SpriteKit,而不是cocos之類的第三方架構, 因此需要手動修改一下DataFormat, 如所示:
4. 通過Atlas bundle來設定輸入檔案所在的位置,我們這裡指定產生的檔案名稱為textureNumber.atlasc,然後設定Header file如所示,都設定好後,點擊Publish Sprite Sheet按鈕,如果沒有出現問題我們要的檔案就產生了.<喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/20160422/20160422091001582.png" alt="\">
5. 開啟Finder 找到我們上面指定的的檔案位置,你會看到產生了一個目錄,和一標頭檔,目錄中還包含了兩個檔案,一個png和一個plist.
6. 拖動產生的目錄和標頭檔到我們的工程中(Xcode), 在彈出的提示對話方塊中, 選擇 create folder references 以及 確認 add to targets 選中.
7. 接下來我們就可以使用我們剛剛加進來的資源檔了,首先在我們要使用的情境檔案中加上剛剛產生的標頭檔的引用,#import"textureNumber.h",標頭檔中包含了所有資源的宏定義,便於我們使用,檔案內容如下:
8. 接下來在我們現有的情境GameScene.m 檔案中的didMoveToView方法中加入如下測試代碼:
9. 然後編譯運行我們現有的遊戲程式,就能看到效果,在螢幕的中下方出現了數字0的圖片。
10. 那麼現在問題來了, 一個遊戲裡面會有多張這類的圖片,我可能會按分類增加多個atlasc貼圖集,比如數字圖片集,子彈圖片機,角色圖片集等等,為了目錄分類更清楚,我建立了一個resource目錄,將多個圖片集都放到統一目錄下管理(藍色檔案夾),會在打包的app中帶目錄的形式,如所示。
11. 為了做一個實驗,我第二次建立的貼圖集裡面小圖片名跟第一次建立的圖片名稱完全一樣,也是0,1,2,3.....這樣會出現什麼現像呢,直接運行之前的程式看一下效果。
如所示, 我們看到之前的0沒有了, 出現了一個紅色叉, 這個表示資源載入出錯了,找不到我們資源了。
12. 這裡面有兩個問題, 一個是加了一層目錄, 原來路徑找不到了, 另個一個是圖片名重複, 系統也不知道載入哪個, 這樣我們就應變先載入指定貼圖集,再取其中包含的貼圖資源,解決方式如下:
13.再一次編譯運行程式, 最好先clean一個工程,然後再編譯運行,我們看到貼圖0又顯示出來了, 雖然跟之前結果一樣, 但實現方案完全不同, 後面的方式更宜於使用。
10. 總結, 使用貼圖集的方式載入可以有效提升遊戲的執行效率,而且圖片資源過多時,更宜於分類的管理,是遊戲中更好的資源圖片的使用方式。