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

1_texturePacker下载_www.codeandweb.com.png

没有去除空白边角的原始图片

1_texturePacker用法.png

直接把图片文件夹拖入软件左侧的导航栏

2_texturePacker用法_拖动.png

TexturePacker直接剪切图片变生成一张大图

3_texturePacker用法_自动剪切.png

点击右下角高级设置 Advanced settings>>

4_texturePacker用法_高级设置.png

选择 Data Format 为SpriteKit,并生成Altas及Swift

5_texturePacker用法_生成Atlas.png

并生成Altas及Swift 之前可以全选左侧导航栏的所有图片,并点击"Anim preview" 预览动画

6_texturePacker用法_预览动画.png

命名Altas文件夹名称及Swift文件名(class为首字母大写)

7_texturePacker用法_生成Atals_swift.png

发布Altas及Swift

8_texturePacker用法_发布.png

发布Altas及Swift 成功 ,查看发布结果

9_texturePacker用法_发布结果.png

把Altas及Swift拖进XCode工程内

10_texturePacker用法_导入atlasc及swift文件.png

类JumpRight为class类,首字母应为大写

11_texturePacker用法_swift类Class首写字母为大写.png

JumpRight内的代码

12_texturePacker用法_JumpRight类.png

定位SpriteKitNode精灵节点在场景中的位置

13_texturePacker用法_scene定位精灵.png

实例化一个类 并代码调用

14_texturePacker用法_代码调用.png

SpriteKit 调用TexturePacker 的最终效果

15_texturePacker用法_最终效果.png

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/babeKitten.zip
更多游戏教学:http://www.iFIERO.com

最新文章

  1. JavaScript学习笔记-用于模式匹配的String方法
  2. DayuCMS 1.525 /include/global.func.php Foreground Arbitrary Code Execution
  3. Example Microprocessor Register Organizations
  4. RPi 2B USB 远程桌面
  5. PHP+MYSQL会员系统的开发实例教程
  6. SSH框架面试题
  7. Hadoop MapReduce概念学习系列之JobTracker、ResourceManager、Task Tracker、NodeManager(二十一)
  8. POJ 3104 Drying 二分
  9. Spring中整合Titles
  10. PHP - 目录与文件
  11. 12.exception对象
  12. 第4阶段——制作根文件系统之编译配置安装busybox(3)
  13. excel2003和excel2007文件的创建和读取
  14. java生成二维码的几个方法
  15. Git使用详细教程(6):git mv重命名文件
  16. SVM:随机产生100个点,建立模型,找出超平面方程——Jaosn niu
  17. JS放在博客里面运行
  18. javascript(三):对象
  19. linux用户管理 用户和用户组信息
  20. c数组

热门文章

  1. java8的4大核心函数式接口
  2. 【HDOJ 5726】GCD(RMQ+二分)
  3. wireshark利用正则表达式过滤http协议中的jpg png zip等无用的数据包
  4. 转:30分钟学会如何使用Shiro
  5. HTML 5 audio标签
  6. 「PHP」设计模式介绍
  7. 微信网页授权,错误40163,ios正确,安卓错误?
  8. 关于python的菜鸟教程
  9. STM32F407+STemwin学习笔记之STemwin移植
  10. django使用pycharm为项目选择虚拟环境-3.1