一步一步图文介绍SpriteKit使用TexturePacker导出的纹理集Altas

1、为什么要使用纹理集?

游戏是一种很耗费资源的应用,特别是在移动设备中的游戏,性能优化是非常重要的

纹理集是将多张小图合成一张大图,使用纹理集有以下优点:

1、减少内存占用,减少磁盘占用;

2、减少磁盘读取次数,一次性读取一张大图比多次读取多张小图速度更快
一张大图:打开-读取小图-读取小图-读取小图-关闭;
多张小图:打开-关闭,打开-关闭,打开-关闭,打开-关闭;

3、减少OpenGL绘制次数;
OpenGL ES 1.1仅仅能够使用2的n次幂大小的图片(即宽度或者高度是2、4、8、64...)。如果采用小图片OpenGL ES1.1会分配给每个图片2的n次幂大小的内存空间,即使这张图片达不到这样的宽度和高度也会分配大于此图片的2的n次幂大小的空间。那么运用这种图片集的方式将会减少内存碎片。虽然在Cocos2d-x v2.0后使用了OpenGL ES 2.0,它不会再分配2的几次幂的内存块了,但是减少读取次数和绘制的优势依然存在。

2、SpriteKit导入SKTexturePacker的纹理集

上官网 www.codeandweb.com 下载 TexturePacker
一步一步图文介绍SpriteKit使用TexturePacker导出的纹理集Altas_第1张图片
没有去除空白边角的原始图片
一步一步图文介绍SpriteKit使用TexturePacker导出的纹理集Altas_第2张图片

直接把图片文件夹拖入软件左侧的导航栏
一步一步图文介绍SpriteKit使用TexturePacker导出的纹理集Altas_第3张图片

TexturePacker直接剪切图片变生成一张大图
一步一步图文介绍SpriteKit使用TexturePacker导出的纹理集Altas_第4张图片

点击右下角高级设置 Advanced settings>>
一步一步图文介绍SpriteKit使用TexturePacker导出的纹理集Altas_第5张图片

选择 Data Format 为SpriteKit,并生成Altas及Swift
一步一步图文介绍SpriteKit使用TexturePacker导出的纹理集Altas_第6张图片

并生成Altas及Swift 之前可以全选左侧导航栏的所有图片,并点击"Anim preview" 预览动画
一步一步图文介绍SpriteKit使用TexturePacker导出的纹理集Altas_第7张图片

命名Altas文件夹名称及Swift文件名(class为首字母大写)
一步一步图文介绍SpriteKit使用TexturePacker导出的纹理集Altas_第8张图片

发布Altas及Swift
一步一步图文介绍SpriteKit使用TexturePacker导出的纹理集Altas_第9张图片

发布Altas及Swift 成功 ,查看发布结果
一步一步图文介绍SpriteKit使用TexturePacker导出的纹理集Altas_第10张图片

把Altas及Swift拖进XCode工程内
一步一步图文介绍SpriteKit使用TexturePacker导出的纹理集Altas_第11张图片

类JumpRight为class类,首字母应为大写
一步一步图文介绍SpriteKit使用TexturePacker导出的纹理集Altas_第12张图片

JumpRight内的代码
一步一步图文介绍SpriteKit使用TexturePacker导出的纹理集Altas_第13张图片

定位SpriteKitNode精灵节点在场景中的位置
一步一步图文介绍SpriteKit使用TexturePacker导出的纹理集Altas_第14张图片

实例化一个类 并代码调用
一步一步图文介绍SpriteKit使用TexturePacker导出的纹理集Altas_第15张图片

SpriteKit 调用TexturePacker 的最终效果
一步一步图文介绍SpriteKit使用TexturePacker导出的纹理集Altas_第16张图片

SpriteKit 调用TexturePacker 的源代码

//
//  GameScene.swift
//  BabeKitten 
//  Copyright © 2018 iFiero.com. All rights reserved.
//

import SpriteKit
import GameplayKit

class GameScene: SKScene {
 
    let catJumpRight = JumpRight()
    private var cat:SKSpriteNode!
    private var catJump:SKSpriteNode!
    
    
    override func didMove(to view: SKView) {
        
        cat = SKSpriteNode(texture:catJumpRight.jumpRight01()) // 调用图片
        cat.position = CGPoint(x: CGFloat(-450), y: CGFloat(-400))
        cat.setScale(0.5)
        cat.zPosition = 1
        self.addChild(cat)
        
        catJump = SKSpriteNode(texture: catJumpRight.jumpRight01()) // 调用图片1
        catJump.position = CGPoint(x: CGFloat(370), y: CGFloat(-400))
        catJump.setScale(0.5)
        catJump.zPosition  = 1
        self.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
    }
}

以上就是使用TexturePacker的所有步聚及源码!

源码传送门:http://www.iFIERO.com/uploads...
更多游戏教学:http://www.iFIERO.com

你可能感兴趣的:(swfit,gamekit)