Atlas是NGUI的图集。我的理解是:Atlas把你的一些零散的图片,合并成一张图。这样做的优点是,能够减少Draw Call。我不了解它的底层运作机制,我猜应该也是再行进DXT之类的纹理压缩,所以,最好把图集的尺寸,也做成128, 256,512,1024之类的大小,以方便其进行格式压缩。

概念:

Atlas : 图集。把美术给你提供的素材,用 NGUI 的 Atlas Maker 工具,合成一张图片(准确的说,还同一时候生成了prefab、mat )。

Sprite:精灵。因为Atlas已经把你的图片都合成一张了,那怎么单独调用呢?就是用Sprite。

1,准备素材

新建一个目录,命名为UITexture。详细操作为:在Project面板中,右键-->【Create】-->【Folder】,然后命名。

把以下两张图片(start.png 和pause.png)复制到 UITexture 目录下。注意,这两张小图都是128*128像素的。

   

2,创建Atlas

在Project面板中,进入UITexture 目录,选中这两张图片,然后 右键-->【NGUI】-->【Atlas Maker】,之后你会看到 Atlas Maker 的界面:

在 Atlas Maker 界面中,点击【Create】button。

之后给这个Atlas 起名为MyAtlas.prefab,点击【保存】。

3*,预览Atlas和Sprite

保存之后,这个新的Atlas 就创建好了。能够点击一下【View Sprites】,预览一下创建好的精灵。

再来看一下这个新建好的Atlas,能够看到,自己主动变成了一张 256*512 的图(要知道,我们的每张小图是128*128的)。这样一来,它有非常多空白的地方。我对此的理解是:

Atlas的长宽比例都是以2的指数幂为单位,比方128 256 1024 2048等。这样做的目的,应该是为了能够採用某种纹理压缩格式,而做的强制转换。

4,运用Atlas 和Sprite 制作一个图片button

以下,我们接着上一篇文章的 Button 那个样例,继续做。首先,删除掉Simple Button的 Label。

然后在检视面板上,UI Script(Script)组件中,点击【Atlas】选项:

在弹出的Select an Atlas面板中,点击【Show  ALL】,会出现项目中全部的Atlas,选择我们刚创建的MyAtlas。例如以下图:

在检视面板上,UI Script(Script)组件中,点击【Sprite】选项:

在弹出的Select a Sprite面板中,选择start 图标(也就是精灵)。

选中后,假设在game视图下看,我们会发现button已经变成图片button了,可是严重变形。所以,我们要依据图片的原始大小,进行设置:找到Dimensions选项,单击后面的【Snap】button。或者手动调整一下数值。

好了,在game视图中,能够看到图片button,和我们预想的一样!

NGUI 3.5教程(四)Atlas和Sprite(制作图片button)的更多相关文章

  1. NGUI系列教程四(自定义Atlas,Font)

    今天我们来看一下怎么自定义NGUIAtlas,制作属于自己风格的UI.第一部分:自定义 Atlas1 . 首先我们要准备一些图标素材,也就是我们的UI素材,将其导入到unity工程中.2. 全选我们需 ...

  2. NGUI 的使用教程与实例(入门)(1 )

    NGUI教程:步骤1-Scene 1.创建一个新的场景(New Scene).2.选择并删除场景里的MainCamera.3.在NGUI菜单下选择Create a New UI,会打开UI创建向导. ...

  3. NGUI全面实践教程(大学霸内部资料)

    NGUI全面实践教程(大学霸内部资料)   试读文档下载地址:链接:http://pan.baidu.com/s/1jGosC9g 密码:8jq5 介绍:NGUI全面实践教程(大学霸内部资料)本书是国 ...

  4. 【Unity3D游戏开发】NGUI之DrawCall数量 (四)

    看了非常多关于NGUI drawCall的文章.见得比較多的一个观点是:一个 Atlas 相应一个Drawcall. 但事实上NGUI内部有自己的一套对DrawCall的处理规则. 相关的规则有: 1 ...

  5. CRL快速开发框架系列教程四(删除数据)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  6. 手把手教从零开始在GitHub上使用Hexo搭建博客教程(四)-使用Travis自动部署Hexo(2)

    前言 前面一篇文章介绍了Travis自动部署Hexo的常规使用教程,也是个人比较推荐的方法. 前文最后也提到了在Windows系统中可能会有一些小问题,为了在Windows系统中也可以实现使用Trav ...

  7. C#微信公众号开发系列教程四(接收普通消息)

    微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...

  8. 无废话ExtJs 入门教程四[表单:FormPanel]

    无废话ExtJs 入门教程四[表单:FormPanel] extjs技术交流,欢迎加群(201926085) 继上一节内容,我们在窗体里加了个表单.如下所示代码区的第28行位置,items:form. ...

  9. TFS(Team Foundation Server)敏捷使用教程(四):工作项跟踪(1)

    工作项跟踪(1) 可跟踪性是软件过程的重要能力,TFS主要是以工作项来实现过程的可跟踪性.曾有人问:"你们实际项目里的工作项是怎么样的?能不能让我们看看?"我也一直很好奇别的公司T ...

随机推荐

  1. Android监控程序本身被卸载方法汇总

    本文章由Jack_Jia编写,转载请注明出处.   文章链接: http://blog.csdn.net/jiazhijun/article/details/10157901 作者:Jack_Jia ...

  2. MySQL中Procedure事务编写基础笔记

    原文:MySQL中Procedure事务编写基础笔记 目录: 一.PROCEDURE: 二.CREATE PROCEDURE基本语法: 三.PROCEDURE小进阶   3.1.基本的DECLARE语 ...

  3. python面向对象的继承

    无话可说,继承主要是一些父类继承,代码是非常具体的 #!/usr/bin/env python #coding:utf-8 class Father(object):#新式类 def __init__ ...

  4. 控制台打印Hibernate的SQL语句显示绑定参数值

    问题? 使用Hibernate提供的show_sql内置属性true只能输出类似于下面的SQL语句:Hibernate:   insert into user(name,password) value ...

  5. codeforces 112APetya and Strings(字符串水题)

    A. Petya and Strings 点击打开题目 time limit per test 2 seconds memory limit per test 256 megabytes input ...

  6. Oracle本地管理对照数据字典管理表空间

    Locally vs. Dictionary Managed Tablespaces 整理自:http://www.orafaq.com/node/3. When Oracleallocates sp ...

  7. Effective C++:条款28:避免返回 handles 指向对象内部成员

    (一) 有时候为了让一个对象尽量小,能够把数据放在另外一个辅助的struct中,然后再让一个类去指向它.看以下的代码: class Point { public: Point(int x, int y ...

  8. php获胜的算法的概率,它可用于刮,大转盘等彩票的算法

    php获胜的算法的概率,它可用于刮,大转盘等彩票的算法. easy,代码里有具体凝视说明.一看就懂 <?php /* * 经典的概率算法, * $proArr是一个预先设置的数组. * 假设数组 ...

  9. Qt中截图功能的实现

    提要 需求:载入一张图片并显示,能够放大缩小,能够截取图片的某个矩形并保存. 原以为蛮简单的一个功能,事实上还是有点小复杂. 最简单Qt图片浏览器能够參考Qt自带的Demo:Image Viewer ...

  10. OWIN与Katana

    OWIN与Katana详解   前言 我胡汉三又回来了,!!!!, 最近忙成狗,实在没空写博文,实在对不起自己,博客园上逛了逛发现 我大微软还是很给力的 asp.net core 1.0 .net c ...