巧用九宫格以减少UI资源量
UI资源量对资源包大小和内存的影响
UI资源具有以下特点:
(1)UI资源几乎都是图片,而图片是最占资源量的资源类型之一。
(2)Unity不支持外部压缩,即使在外部将一个10MB的图片压缩到只剩1MB,导入引擎之后它也会被解压出来变成10MB,然后转换为各平台特有的格式。
(3)UI资源一般都贴着相机视窗显示在最上层,也是游戏中人机交互的重要部分,一般需要保证高质量,所以一般都使用RGB32位色(真彩色),这会让资源量更大。
(4)UI资源一般涉及大量图标、背景框等,如果要保证高分辨率,它们将会导致资源量很大。
而且因为UI资源几乎都是以图集形式展现,所以在加载的时候,它会被整个一块儿加载进内容,如果不优化好UI医院两,会增大内存的开销。
什么是九宫格UI
九宫格,顾名思义,就是9个格子,这9个格子并不要求一定要相同大小,是一种做UI常见的方式,来增强UI资源的复用性并减少资源量。九宫格的主要目的是处理图片拉伸效果,因为图片一旦被拉伸,他就会出现形变、模糊等问题,但是,有的图片它的某一些部分又是允许被拉伸的。例如,一个UI背景框,它的中间部分几乎是一个纯色,允许被拉伸(纯色被拉伸不会发生质量问题),但是,边缘的4个角可能有一些特殊花纹或则倒角不允许被任意拉伸,这个时候即可以用九宫格,来使4个角不进行拉伸放大,只让中间部分进行拉伸放大,达到一个小框拉大成一个大背景框使用的同时图片质量又不会发生损伤的目的。
如何让美术提供合适的九宫格UI资源
让美术尽量地提供九宫格资源,主要有以下一些原则:
(1)不到万不得已的情况下,对于大面积地板性质的UI,尽量只在4个角上做文章,其他地方用可用于拉伸的纯色。
(2)凡是左右可以缩短的UI、上下可以缩短的UI,都尽量使用九宫格切短了交给程序来做。九宫格不一定是9个格子,也可以是3个格子等。
如何在NGUI中划分九宫格
当美术将一个资源图片合并成一个非常精简小巧的图片交给客户端程序后,客户端程序需要对这个图片进行切割九宫格。切割方法为如下。
(1)将这个UI原件制作到图集中去。
(2)选中图集的Atlas预设文件,在Inspector界面。
(3)在Sprite Details中单击Sprite按钮,会弹出这个图集中所有精灵的预览图,从中选中要切割九宫格的那个Sprite。
(4)调整Border设置项,这个Border就是切割九宫格所需要的设置。它一共需要设置4个参数:Left、Right、Bottom、Top,这4个项代表着:从左边朝右X像素位置处划一条竖着的线,从右边朝左X像素位置处划一条竖着的线,从下边朝上X像素处划一条横着的线,从上边朝下X像素处划一条横着的线。这样4条线就将一个Sprite切成了九宫格。
如何使用九宫格UI
使用九宫格UI的时候,必须保证这个Sprite是已经切好了九宫格。然后创建这个Sprite,将它的模式设置为Sliced即可。
Fill Center选项是自动拉伸九宫中的中心格子来充满中心被拉大的区域,如果不勾选Fill Center选项,则九宫格被拉伸之后,中心格子不会自动充满,会出现一个空隙。
也可以将图片设置为Advance高级模式,高级模式的本质区别是,允许对划分的九宫格的每一块设置一个Type,比如左上角的格子平铺、中心各自拉伸等。
去掉Mipmap以进一步降低资源包大小和内存占用
在Unity中,MipMap纹理图片的一个属性,有开启和关闭两种状态。比如说一张1024*1024的纹理图片,在导入引擎之后它的默认状态下MipMap是开启状态的,这会导致它会自动生成512*512、256*256、128*128、64*64、32*32的这么多张额外的图片。主要用途是,当这个纹理离摄像机足够远时(例如一个人跑到了很远的地方去),这个纹理图片在游戏摄像机中就会很小,这个时候为了节省性能和达到更好的显示效果,Unity会自动选用之前自动生成的众多MipMap小纹理中的一张来替代最初的纹理。
NGUI生成的UI图集也是一张纹理图片,它的默认状态下也是选中了MipMap的,但是,UI是附着在摄像机视窗最上层的,几乎不会存在像人物一样跑到很远的地方去的情况。所以,可以选中UI图集的图片文件,在图片类型红选择Advance高级类型,然后取消掉MipMap的选项,再Apply应用保存即可。
巧用九宫格以减少UI资源量的更多相关文章
- 巧用Drawable 实现Android UI 元素间距效果
源文地址: 巧用Drawable 实现Android UI 元素间距效果 在大部分的移动UI或者Web UI都是基于网格概念而设计的.这种网格一般都是有一些对其的方块组成,然后它们组合成为一个块.使用 ...
- Android 性能优化之减少UI过度绘制
什么是过度绘制(OverDraw) 在多层次重叠的UI结构里面,如果不可见的UI也在做绘制的操作,会导致某些像素区域被绘制了多次.这样就会浪费大量的CPU以及GPU资源.过度绘制最直观的影响就是会导致 ...
- 如何减少UI设计师产品与前端工程师的沟通成本
在日常工作中,UI设计师/产品与前端工程师难免会有一些冲突,这是我的一些小建议. 1.如何减少时间成本 先制作UI组件,再拼接页面 如果UI给前端的是一堆页面,前端需要花一些时间去整理提取UI组件.另 ...
- PHP也玩并发,巧用curl 并发减少后端访问时间
首先,先了解下 php中的curl多线程函数: # curl_multi_add_handle# curl_multi_close# curl_multi_exec# curl_multi_getco ...
- 为图片添加九宫格信息-UI界面编辑器(SkinStudio)教程
1.1. 为图片添加九宫格信息 在UI编辑器中添加一张图片 使用Photoshop打开这张图片 放大这张图片,使用切片工具,选取LeftTop(左上角固定不变的位置) 双击切片,找到尺寸信息 将尺 ...
- Cocos2d-JS项目之四:UI界面的优化
测试环境: iphone4.iOS6.1.2.chrome 37.2062.60,Cocos2d-js 3.6 之前写了不少,实际项目也按这个去优化了,也有效果,但到最后才发现,尼玛,之前都搞错了,之 ...
- 高级UI晋升之View渲染机制(二)
更多Android高级架构进阶视频学习请点击:https://space.bilibili.com/474380680 优化性能一般从渲染,运算与内存,电量三个方面进行,今天开始说聊一聊Android ...
- 游戏UI框架设计(三) : 窗体的层级管理
游戏UI框架设计(三) ---窗体的层级管理 UI框架中UI窗体的"层级管理",最核心的问题是如何进行窗体的显示管理.窗体(预设)的显示我们前面定义了三种类型: 普通.隐藏其他.反 ...
- UI型Bug定义的处理方法
[UI型Bug定义] 这里指的UI型指以下两种Bug: 第一种是文字型Bug,即和给定的字符资源不一致的Bug,比如文字/字符/提示语/引导语/用户协议等文字方面的不一致. 第二种是UI效果不一致的B ...
随机推荐
- [改善Java代码] 提倡异常的封装
JavaAPI提供的异常都是比较低级别的,低级别是指只有开发人员才能看懂的异常.而对于终端用户来说基本上就是天书,与业务无关,是纯计算机语言的描述. 异常封装的三方面的好处: 1)提高系统的友好性 ...
- 实现TableLayout布局下循环取出TableRow控件中的文字内容到list集合
布局方式为TableLayout,利于实现表单样式展现. <!-- 详情内容区域 --> <ScrollView android:layout_above="@id/id_ ...
- SDKInitializer.initialize报错求助
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ...
- hdu 1325 Is It A Tree?
Is It A Tree? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- Spring(3.2.3) - Beans(12): 属性占位符
使用属性占位符可以将 Spring 配置文件中的部分元数据放在属性文件中设置,这样可以将相似的配置(如 JDBC 的参数配置)放在特定的属性文件中,如果只需要修改这部分配置,则无需修改 Spring ...
- Ehcache(2.9.x) - API Developer Guide, Cache Manager Event Listeners
About CacheManager Event Listeners CacheManager event listeners allow implementers to register callb ...
- Linux 命令 - w: 显示登录的用户及其当前执行的任务
命令格式 w - [husfV] [user] 命令参数 -h 不打印头部信息 -u 当列出当前进程和 CPU 时间时忽略用户名,这主要是用于执行su命令后的情况. -s 使用简短的格式化,不打印 L ...
- Nginx - Windows 环境安装 Nginx
1. 访问 http://nginx.org/en/download.html,下载 Windows 版本的安装包 2. 解压安装包,双击 nginx.exe,启动 nginx 3. 访问 http: ...
- .NET委托与事件文章收集
学习这方面的知识,先将文章收集着,以待以后查看. 张子阳 C# 中的委托和事件
- zookeeper启动报错(数据目录权限不对)
zookeeper启动报错日志: 2016-11-16 11:19:43,880 [myid:3] - INFO [WorkerReceiver[myid=3]:FastLeaderElection@ ...