一步一步图文介绍SpriteKit使用TexturePacker导出的纹理集Altas
1、為什么要使用紋理集?
游戲是一種很耗費(fèi)資源的應(yīng)用,特別是在移動設(shè)備中的游戲,性能優(yōu)化是非常重要的
紋理集是將多張小圖合成一張大圖,使用紋理集有以下優(yōu)點(diǎn):
1、減少內(nèi)存占用,減少磁盤占用;
2、減少磁盤讀取次數(shù),一次性讀取一張大圖比多次讀取多張小圖速度更快 一張大圖:打開-讀取小圖-讀取小圖-讀取小圖-關(guān)閉; 多張小圖:打開-關(guān)閉,打開-關(guān)閉,打開-關(guān)閉,打開-關(guān)閉;
3、減少OpenGL繪制次數(shù); OpenGL ES 1.1僅僅能夠使用2的n次冪大小的圖片(即寬度或者高度是2、4、8、64...)。如果采用小圖片OpenGL ES1.1會分配給每個(gè)圖片2的n次冪大小的內(nèi)存空間,即使這張圖片達(dá)不到這樣的寬度和高度也會分配大于此圖片的2的n次冪大小的空間。那么運(yùn)用這種圖片集的方式將會減少內(nèi)存碎片。雖然在Cocos2d-x v2.0后使用了OpenGL ES 2.0,它不會再分配2的幾次冪的內(nèi)存塊了,但是減少讀取次數(shù)和繪制的優(yōu)勢依然存在。
2、SpriteKit導(dǎo)入SKTexturePacker的紋理集
上官網(wǎng) www.codeandweb.com 下載 TexturePacker
沒有去除空白邊角的原始圖片
直接把圖片文件夾拖入軟件左側(cè)的導(dǎo)航欄
TexturePacker直接剪切圖片變生成一張大圖
點(diǎn)擊右下角高級設(shè)置 Advanced settings>>
選擇 Data Format 為SpriteKit,并生成Altas及Swift
并生成Altas及Swift 之前可以全選左側(cè)導(dǎo)航欄的所有圖片,并點(diǎn)擊"Anim preview" 預(yù)覽動畫
命名Altas文件夾名稱及Swift文件名(class為首字母大寫)
發(fā)布Altas及Swift
發(fā)布Altas及Swift 成功 ,查看發(fā)布結(jié)果
把Altas及Swift拖進(jìn)XCode工程內(nèi)
類JumpRight為class類,首字母應(yīng)為大寫
JumpRight內(nèi)的代碼
定位SpriteKitNode精靈節(jié)點(diǎn)在場景中的位置
實(shí)例化一個(gè)類 并代碼調(diào)用
SpriteKit 調(diào)用TexturePacker 的最終效果
SpriteKit 調(diào)用TexturePacker 的源代碼
// // GameScene.swift // BabeKitten // Copyright ? 2018 iFiero.com. All rights reserved. //import SpriteKit import GameplayKitclass GameScene: SKScene {let catJumpRight = JumpRight()private var cat:SKSpriteNode!private var catJump:SKSpriteNode!override func didMove(to view: SKView) {cat = SKSpriteNode(texture:catJumpRight.jumpRight01()) // 調(diào)用圖片cat.position = CGPoint(x: CGFloat(-450), y: CGFloat(-400))cat.setScale(0.5)cat.zPosition = 1self.addChild(cat)catJump = SKSpriteNode(texture: catJumpRight.jumpRight01()) // 調(diào)用圖片1catJump.position = CGPoint(x: CGFloat(370), y: CGFloat(-400))catJump.setScale(0.5)catJump.zPosition = 1self.addChild(catJump)let jumpAction = SKAction.animate(with: catJumpRight.jumpRight(), timePerFrame: TimeInterval(0.05))let repeatAction = SKAction.repeatForever(jumpAction)catJump.run(repeatAction)}override func update(_ currentTime: TimeInterval) {// Called before each frame is rendered} }復(fù)制代碼以上就是使用TexturePacker的所有步聚及源碼!
源碼傳送門:www.iFIERO.com/uploads/bab… 更多游戲教學(xué):www.iFIERO.com
轉(zhuǎn)載于:https://juejin.im/post/5b7bcfa56fb9a01a1e01fcf6
總結(jié)
以上是生活随笔為你收集整理的一步一步图文介绍SpriteKit使用TexturePacker导出的纹理集Altas的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何开启并配置CITRIX Xenser
- 下一篇: Vim 行号的显示与隐藏