NGUI 灰化图标 按钮——不增加drawcall

  在游戏中某些地方可能需要对按钮进行灰化显示,从而表示不能点击!在网上找了一下有些方法是直接用UITexture+灰化shader去做这件事,但是每加1个UITexture就会多1个drawcall!另外有些方案写的不太清楚,看不懂!不过也基本都是要使用灰化shader,不可能说每有一个需要灰化地方的图片就让美术出多一张对应的灰化资源图,这样太浪费空间了。

  我的解决方法是这样的:

  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!

现在这个是目前想到的灰化按钮的最好用法,有更好的或者有错误互相交流下,谢谢,转载请注明出处!

时间: 2024-10-08 10:25:00

NGUI 灰化图标 按钮——不增加drawcall的相关文章

Unity NGUI监听按钮点击事件的三种方法

NGUI版本:3.6.5 1.直接实现OnClick方法: 创建一个脚本,在脚本中实现OnClick()方法,绑定该脚本到按钮上,点击时就会实现OnClick函数内容: 2.使用SendMessage: 选择按钮后,打开Component——NGUI——Interaction,选择Button Message,为按钮添加一个UIButton Message组件: 然后设置UIButton Message中的参数即可: Target:接收按钮消息的游戏对象: Function Name:接收按钮消

NGUI 创建自定义按钮并添加按钮响应

因为项目需要,很多资源需要实例化,同时希望利用NGUI的一些功能,折腾了一下还是找到了解决办法. private GameObject creatItems(Vector3 pos,Texture2D texture) { //这个是利用NGUITools的功能,前一个参数是父物体,后一个是要实例化的对象.也可以使用unity自带的实例化函数 GameObject obj = NGUITools.AddChild(this.gameObject, pref); //这一句是指定父物体,我的在上一

itop portal 页面语言切换图标按钮,界面跳转按钮,完美解决

主要修改:修改类文件,webpage.class.inc.php 加入变量,函数,功能改写修改language 配置文件,不再需要手动修改itop webservice的url,前提是itop自己的配置文件,root_url后面带有/符号 修改application/webpage.class.inc.php 在56行下面添加     protected $s_userid;     protected $s_userlanguage; 修改application/webpage.class.i

挑战练习2.9 从按钮到图标按钮

把前进和后退按钮变成只显示指示图标,让用户界面更清爽. 1.把UI界面的Button控件换成ImageButton 2.初始化ImageButton控件对象 3.修改Button为ImageButton创建监听器 4.最后效果 原文地址:https://www.cnblogs.com/real1587/p/9865342.html

toggleClass() 方法做类似于微信扣扣点击语音图标按钮变成切换到语音输入功能,点击键盘图标按钮切换到文字输入状态的效果

就是这种效果的类似. <html><head><script type="text/javascript" src="/jquery/jquery.js"></script><script type="text/javascript">$(document).ready(function(){ $(".wo").click(function(){ $("#l

简单控件开发实现图标按钮

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; namespace RibbonBarCrl { public partial class But

firefox按钮菜单自动弹出uc脚本,修正Omnibar上的图标按钮有些不能弹出的问题

// ==UserScript== // @name AutoPopup.uc.js // @description Auto popup menulist/menupopup // @compatibility Firefox 24.0+ // @author GOLF-AT, modify by gsf // @version 2015.1.29 // ==UserScript== (function () { var nDelay = 300; var overElt = null; va

纯CSS3绘制的黑色图标按钮组合

在线演示 本地下载 原文地址:https://www.cnblogs.com/lovellll/p/10105307.html

JGUI源码:实现图标按钮及下拉菜单(16)

效果如下 代码片段如下 <div class="jgui-btn" id="personalbtn" style="float:right;"> <div class="jgui-btn-info"> <img src="./images/head.jpg"></img> <span>麦田守望者</span> <i class=&