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

一步一步图文介绍SpriteKit使用TexturePacker导出的纹理集Altas的更多相关文章

  1. iis7.5安装配置php环境详细清晰教程,三步实现【图文】

    iis7.5安装配置php环境详细清晰教程,三步实现[图文] iis7.5是安装在win7.win8里的web服务器,win2003.win2000的web服务器使用的是iis6.0,由于win7.w ...

  2. 一步一步学习SignalR进行实时通信_1_简单介绍

    一步一步学习SignalR进行实时通信\_1_简单介绍 SignalR 一步一步学习SignalR进行实时通信_1_简单介绍 前言 SignalR介绍 支持的平台 相关说明 OWIN 结束语 参考文献 ...

  3. 《一步一步写嵌入式操作系统》读书笔记1—Skyeye介绍、安装和HelloWorld

    2013-11-14 最近在看<一步一步写嵌入式操作系统>,感觉此书甚好,许多地方讲得很清楚.可操作性强,计划边读边实践边写笔记,希望能够逐步熟悉嵌入式操作系统底层的东西,最终剪裁出一套实 ...

  4. ASP.NET MVC 3 Model【通过一简单实例一步一步的介绍】

    今天主要讲Model的两个方面: 1. ASP.Net MVC 3 Model 简介 通过一简单的事例一步一步的介绍 2. ASP.Net MVC 3 Model 的一些验证 MVC 中 Model ...

  5. 超详细,多图文介绍redis集群方式并搭建redis伪集群

    超详细,多图文介绍redis集群方式并搭建redis伪集群 超多图文,对新手友好度极好.敲命令的过程中,难免会敲错,但为了截好一张合适的图,一旦出现一点问题,为了好的演示效果,就要从头开始敲.且看且珍 ...

  6. 一步一步使用ABP框架搭建正式项目系列教程之本地化详解

    返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 本篇目录 扯扯本地化 ABP中的本地化 小结 扯扯本地化 本节来说说本地化,也有叫国际化.全球化的,不管怎么个叫法,反正道理都是一 ...

  7. C#进阶系列——一步一步封装自己的HtmlHelper组件:BootstrapHelper(三:附源码)

    前言:之前的两篇封装了一些基础的表单组件,这篇继续来封装几个基于bootstrap的其他组件.和上篇不同的是,这篇的有几个组件需要某些js文件的支持. 本文原创地址:http://www.cnblog ...

  8. 12.Linux软件安装 (一步一步学习大数据系列之 Linux)

    1.如何上传安装包到服务器 有三种方式: 1.1使用图形化工具,如: filezilla 如何使用FileZilla上传和下载文件 1.2使用 sftp 工具: 在 windows下使用CRT 软件 ...

  9. 一步一步学ROP之linux_x64篇

    一步一步学ROP之linux_x64篇 一.序 **ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过现代操作系统的各种通用防 ...

随机推荐

  1. HDU 1006 Tick and Tick(时钟,分钟,秒钟角度问题)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1006 Tick and Tick Time Limit: 2000/1000 MS (Java/Oth ...

  2. ios Block详细用法

    ios Block详细用法 ios4.0系统已开始支持block,在编程过程中,blocks被Obj-C看成是对象,它封装了一段代码,这段代码可以在任何时候执行.Blocks可以作为函数参数或者函数的 ...

  3. kafka 参数配置 1

    kafka 参数配置 #参数配置 * broker.id : kafka 集群的唯一,标识每个broker * log.dirs : 指定kafka持久化消息的目录,可以设置多个目录,如:/home/ ...

  4. Nginx自定义模块编写:根据post参数路由到不同服务器

    Nginx自定义模块编写:根据post参数路由到不同服务器 2014-05-05 15:27 blogread IT技术博客 字号:T | T Nginx可以轻松实现根据不同的url 或者 get参数 ...

  5. Selenium基本用法以及元素定位

    一.Selenium 简介 Selenium是ThroughtWorks公司一个强大的开源Web功能测试工具系列,提供一套测试函数,用于支持Web自动化测试.函数非常灵活,能够完成界面元素定位.窗口跳 ...

  6. 设计一个方法injectBeforeAsyncSend,能够实现如下功能:在发起异步请求之前打印出请求的类型、URL、method、body、timestamp 等信息。

    异步请求逻辑注入 工作中我们需要对异步请求的请求信息打印日志,但是又不能耦合在业务代码中打印.请设计一个方法injectBeforeAsyncSend,能够实现如下功能:在发起异步请求之前打印出请求的 ...

  7. iOS之利用runtime,避免可变数组和可变字典为nil或者数组越界导致的崩溃

    NSArray.NSMutableArray.NSDictionary.NSMutableDictionary.是我们的在iOS开发中非常常用的类.当然,在享受这些类的便利的同时,它们也给我们带来一些 ...

  8. Ext自定义控件 - 自学ExtJS

    本文所有思想表达均为个人意见,如有疑义请多批评,如有雷同不甚荣幸. 转载请注明出处:Nutk'Z http://www.cnblogs.com/nutkz/p/3448801.html 在用到ExtJ ...

  9. tomcat如何配置俩个版本

    Java-web除了JDK,还需配置服务器(tomcat); 如何配置俩个版本的tomcat; 1.将tomcat-bin目录下的startup.bat和catalina.bat里的%CATALINA ...

  10. 关于linux‘RedHat6.9在VMware虚拟机中的安装步骤

    redhat支持多种安装方式:光盘安装,硬盘安装和网络安装等,可以根据个人的实际情况来选择.我在这里选择的是光盘安装的方式安装RHEL6.9.(以下简称6.9) 1.首先准备好6.9的光盘镜像,在安装 ...