unity游戏开发之NGUI的UISprite染色

NGUI的UISprite动态染色的一种解决方案 游戏的UI开发中经常会遇到 阅读详情



      游戏的UI开发中经常会遇到染色问题。例如按钮失效变灰的效果,同一个道具通过策划表配的颜色值染上红绿蓝紫等颜色,效果如下



       最笨最挫的方法当然是让美术多出几个资源图,这样的一个缺点是浪费资源,在手游上资源的大小显得尤为重要。而且不好维护和复用,修改一个资源需要同时修改其他颜色的多个同类资源。一种比较好的解决方案是通过更换渲染的材质,用染色材质代替原来的材质,然后把原来材质的主纹理和透明纹理赋值给新的材质。这样就可以实现用程序动态切换颜色,而且只需要一个基础资源,节省资源大小,容易维护。

下面给出这个解决方案的流程图,如下图所示



       下面写一个例子,通过按r键,g键,b键,y键来动态切换染红色,染绿色,染蓝色,灰化效果。项目的GameObject图如下


染色普通颜色的材质对应的shader如下

[plain]
  1. Shader "Winter/ChangeColor" {  
  2.     Properties {  
  3.         _MainTex ("Base (RGB)", 2D) = "white" {}  
  4.         _Color ("Main Color", Color) = (1,1,1,1)  
  5.           
  6.     }  
  7.     SubShader {  
  8.         Tags { "Queue" = "Transparent+10" }  
  9.         LOD 200  
  10.          Pass  
  11.          {  
  12.          ZWrite On  
  13.          ZTest Off  
  14.   
  15.   
  16.             Blend SrcAlpha OneMinusSrcAlpha  
  17.             Lighting Off  
  18.             //Cull Off  
  19.             CGPROGRAM  
  20.             #pragma vertex vert  
  21.             #pragma fragment frag  
  22.   
  23.             #include "UnityCG.cginc"  
  24.   
  25.             sampler2D _MainTex;  
  26.             fixed4 _Color;  
  27.             float _ColorCtrl;  
  28.   
  29.             struct v2f   
  30.             {  
  31.                 float4  pos : SV_POSITION;  
  32.                 float2  uv : TEXCOORD0;  
  33.             };  
  34.   
  35.             float4 _MainTex_ST;  
  36.   
  37.             v2f vert (appdata_base v)  
  38.             {  
  39.                 v2f o;  
  40.                 o.pos = mul (UNITY_MATRIX_MVP, v.vertex);  
  41.                 o.uv = TRANSFORM_TEX (v.texcoord, _MainTex);  
  42.                 return o;  
  43.             }  
  44.   
  45.             fixed4 frag (v2f i) : COLOR  
  46.             {  
  47.                 fixed4 texcol = tex2D (_MainTex, i.uv);  
  48.                 result = texcol * _Color;  
  49.                 result.a = texcol.a;  
  50.   
  51.                 return result;  
  52.             }  
  53.             ENDCG  
  54.          }  
【UnityShader】游戏角色服饰染色 现在的大部分游戏都有给角色身上的服饰染色的功能。有的是给出几种染色的配色方案供玩家选择,还有的是直接开发染色区域,在区域里可以自定义染色颜色。 阅读详情

相关推荐

Unity染色系统插件

能够支持不同的染色,支持安卓和Iphone 平台

[Shader]对NGUI的UISprite和UITexture进行裁剪

NGUI 对Sprite和Texture做遮罩的。具体可以看: http://blog.youkuaiyun.com/kakashi8841/article/details/44851885

Unity实现水体染色

unity实现水体染色的包,包括实现代码,shader,和unity standard assets

Unity2020 发布Android包,下载安装配置JDK、SDK、NDK详细教程

配置成功页面 JDK、SDK、NDK

qq_41263535的博客 1万+

从零开始!在 Windows 上安装与配置 Dify

这篇博客将详细介绍如何在 Windows 系统上部署 Dify,适合零基础用户。从 Docker 和 WSL 的安装配置开始,逐步指导用户设置 Git、Docker 环境以及 Dify 配置文件,解决可能遇到的端口冲突等问题,最终完成 Dify 的启动和测试。通过简明易懂的步骤,帮助用户在本地成功运行 Dify,实现模型供应商配置,让 Dify 项目在 Windows 平台上顺利上线。

qq_49035156的博客 5万+

强化学习-动态规划

动态规划(dynamic programming)是程序设计算法中非常重要的内容,能够高效解决一些经典问题,例如背包问题和最短路径规划。动态规划的基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到目标问题的解。动态规划会保存已解决的子问题的答案,在求解目标问题的过程中,需要这些子问题答案时就可以直接利用,避免重复计算。本章介绍如何用动态规划的思想来求解在马尔可夫决策过程中的最优策略。

qq_45481856的博客 2113

组态王通过以太网与西门子S7-200 SMART PLC通讯案例详解

通过以上步骤,我们成功实现了组态王与西门子S7-200 SMART PLC的以太网通讯。这一技术不仅提高了工业自动化系统的灵活性和可靠性,还为初学者提供了一个实用的学习案例。希望本文能帮助您快速掌握组态王与西门子S7-200 SMART PLC的通讯技术。如有任何疑问,欢迎留言讨论!

2401_88785500的博客 2004

卡尔曼滤波五步拆解:用Excel手推姿态解算全过程

本文通过Excel手推演示,详细拆解了卡尔曼滤波在姿态解算中的五步核心流程。文章以融合陀螺仪与加速度计数据估算角度为例,从状态预测、协方差更新到增益计算,逐步展示如何将抽象的矩阵运算转化为可视化的表格计算,帮助读者直观理解滤波器的“预测-修正”机制,并为算法实现与参数调优提供清晰指导。

hhh00的博客 978

MIPI CPHY学习笔记02:TX物理层一致性测试项解析(HS信令模式)第一部分

在手机、平板等移动设备中,MIPI C-PHY是连接相机、显示屏等高速外设的“数据高速公路”。高速(HS)信令模式就是这条公路的“快车道”,专门用于传输高清图像、视频等大容量数据,既要保证传输速率,又要维持信号稳定。物理层一致性测试是对这条“快车道”的全面质检,确保高速传输下数据不卡顿、不失真。今天我们聚焦MIPI C-PHY TX(发射端)的Group 2 HS信令测试,用通俗语言拆解22个核心测试项(含2个过时项),看懂高速信号的合格标准。

一只豌豆象的博客 288

UG二次开发GRIP刻字

UG二次开发GRIP刻字

qq285503851的博客 1138

利用GAT(图论分析工具箱)构建并分析大脑结构协变网络学习笔记

前言 前面我学习了利用DTI构建白质纤维脑网络,并采用GRETNA计算了小世界网络属性。阅读文献发现可以利用灰质体积或皮层指标(皮层厚度、折叠指数、沟深)等构建结构协变网络再进行网络拓扑属性的计算。因此,我采用前面提取的灰质体积和皮质数据进行了结构协变网络分析,特此写下笔记以便后面的学习。 一、数据准备 二、构建结构协变网络 三、全局属性的统计分析 四、局部属性的统计分析 五、网络攻击分析 六、度的分布 ..................

weixin_52073820的博客 7496

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

上一篇: unity3d面试题摘选(全)
下一篇: Unity3d脚本执行顺序详解
七大黍
博客等级 码龄20年 436粉丝 260原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值