NGUI 灰化按钮或图标
在游戏中某些地方可能需要对按钮进行灰化显示,从而表示不能点击!在网上找了一下有些方法是直接用UITexture+灰化shader去做这件事!另外有些方案写的不太清楚,看不懂!不过也基本都是要使用灰化shader,不可能说每有一个需要灰化地方的图片就让美术出多一张对应的灰化资源图,这样太浪费空间了。
我的解决方法是这样的:copy已有的atlas材质及预设体!然后将材质的shader指定为灰化的shader,atlas预设体中的材质指定灰化材质!具体步骤如下:
0.需要一个灰化效果的shader,具体直接网上搜索找一下相关的shader代码就可以了!
1.使用atlas maker制作生成了图集common_atlas(包括生成了贴图图集common_atlas.png、预设体common_atlas.prefab、材质common_atlas.mat这三个文件)
2.复制了图集预设体、图集材质,姑且命名为gray_common_atlas.prefab, gray_common_atlas.mat,然后将材质文件gray_common_atlas.mat默认的shader指定为前面选好的灰化shader,这样使用这个灰化prefab的sprite就都是灰化效果。
3.在运行中,一旦某个按钮或者图标sprite(它们的atlas是指定为正常的common_atlas.prefab)需要灰化,这个时候就动态的将Sprite.atlas设置为gray_common_atlas.prefab,需要设置正常状态的时候,就反过来设置为正常的common_atlas.prefab。
4.当然了,由于sprite的atlas属性你不好去new一个,所以我是在布局阶段,每有一个图集就新建1个sprite,然后选择对应的图集atlas,然后将这个sprite放在一个单体类AllAtlas中,一旦某个按钮或图标的sprite需要动态设置指定的atlas属性,就将AllAtlas中对应的sprite.atlas赋值给它。
比如AwardSprite.atlas = AllAtlas.Instance.CommonSprite.atlas,这样就设置了想要的atlas!
因为1个atlas就是1个drawcall,而用到灰化图标的地方同屏显示的其他图片肯定是其他atlas,这样使用1个这样的灰化atlas会增加1个drawcall!
NGUI 灰化按钮或图标的更多相关文章
- 【原创】小白学jquery Mobile《构建跨平台APP:jQuery Mobile移动应用实战》连载五(给按钮加图标)
在范例5-4所使用的导航栏中,已经为按钮加入了图标的样式,但是当时并没有介绍按钮的图标究竟是怎么一回事.下面截取范例5-4中导航栏部分的代码: <divdata-role="foote ...
- 按钮的图标 Button icons-JQUERY MOBILE 1.0正式版中文手册
按钮的图标 Button icons-JQUERY MOBILE 1.0正式版中文手册 data-icon属性可以被用来创建如下所示的图标 左箭头data-icon="arrow-l&quo ...
- Unity NGUI实现按钮点击播放Aniamtion
unity版本:4.5 NGUI版本:3.6.5 参考链接:http://www.colabug.com/thread-1029974-1-1.html,作者:COLABUG.COM 橘虞 1.怎么创 ...
- Flex 按钮添加图标
第一种是在Flex应用中创建一个变量,利用[Bindable]和[Embed] ,在代码中以参数形式传入制定图标(icon)的路径,然后利用类似icon="{Icon}"的代码嵌入 ...
- UEditor工具栏上自定义按钮、图标、事件和右击菜单添加自定义按钮
首先我要说是,举例说的这个版本是1.2以上的,因为一些配置代码转移到了zh-cn.js里,其他没有变化.开门见山直接写:(我自定义的是在线美图功能) 第一步:找到ueditor.config.js文件 ...
- [原]NGUI之按钮置灰
传统按钮置灰,需要使用另外一张纹理. 本例通过修改shader和NGUI sprite的r值实现按钮置灰.优势:节省纹理,操作简单 将NGUI Unlit/Transparent Colored片段部 ...
- bootstrap带图标的按钮与图标做连接
bootstrap通过引入bootstrap的JS与css文件,给元素添加class属性即可. 使用图标只需要加入一个span,class属性设置为对应的图标属性即可.图标对应的class属性可以参考 ...
- toolbar按钮添加图标
需要toolbar关联imagelist组件,imagelist组件添加需要的图片,在toolbar新建按钮,按钮中选择相应图表.
- VS2010 MFC对话框程序用CButtonST给按钮添加图标
也许是VS版本的关系,CButtonST中的BCMenu两个文件是无法编译通过的. 1.拷贝下载的CButtonST(我下载的v3.9)中的BtnST.h和BtnST.cpp文件到自己项目目录下. ...
随机推荐
- C#利用WIN32实现按键注册
using System.Runtime.InteropServices; using System.Collections.Generic; using System; using System.W ...
- java ==与equal
java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(== ...
- Commons-Collections 集合工具类的使用
package com.bjsxt.others.commons; import java.util.ArrayList; import java.util.List; import org.apac ...
- Ninject之旅之四:Ninject模块
摘要 随着应用程序的增长,注册的服务列表跟着变长,管理这个列表将变得困难.Ninject模块是一个好的将我们的类型绑定分离到不同的绑定组的方式,它很容易地将分组组织到不同的文件中.将一个类变成一个Ni ...
- 14.S5PV210串行通信编程实战
1.整个程序流程分析(1)整个串口通信相关程序包含2部分:uart_init负责初始化串口,uart_putc负责发送一个字节2.串口控制器初始化关键步骤(1)初始化串口的Tx和Rx引脚所对应的GPI ...
- JS function document.onclick(){}报错Syntax error on token "function", delete this token
JS function document.onclick(){}报错Syntax error on token "function", delete this token func ...
- Programming Entity Framework 翻译
刚开始接触.net,c#语法应该说还没掌握好.学习实践的旅程就从linq和EF开始吧.感觉相比之前的开发方式,linq和EF方便好多. linq入门用了好久,因为c#不行,补习了2.0的泛型,3.0和 ...
- linux 下 TeXmacs 作 Maple 18 的前端
TeXmacs的maple 插件比较老,默认条件下无法运行maple 18.且默认情况下maple18不在系统的搜索目录中,导致TeXmacs中不显示 maple 的session.以下假设TeXma ...
- iOS中UIImageView的填充模式
UIImageView的填充模式 属性名称 imageV.contentMode枚举属性: @"UIViewContentModeScaleToFill", // 拉伸自适应填满整 ...
- [JS]Ext最新GPL版
https://www.sencha.com/legal/gpl/ Sencha Ext JS.Sencha Touch.Sencha GXT http://cdn.sencha.com/ext/gp ...