在做项目的时候。我们经常要用到禁用为灰色的效果。比如 我们要做 图鉴 我们已有的装备物品为彩色。没有的为灰色。

在我们设置UISprite或者UITesture的颜色时。会发现,效果不好还会被图片本身的颜色影响。如下

而我们需要的是这样的效果

这时。就需要我们写Shader来弄了。

Unity中搜索 :Transparent Colored

打开该shader 搜索 函数fixed4 frag (v2f i) : COLOR

{

fixed4 col = tex2D(_MainTex, i.texcoord) * i.color;

return col;

}

将之替换为如下代码fixed4 frag (v2f i) : COLOR

{

fixed4 col;

if (i.color.r < 0.001)

{

col = tex2D(_MainTex, i.texcoord);

float grey = dot(col.rgb, float3(0.299, 0.587, 0.114));

col.rgb = float3(grey, grey, grey);

}

else

{

col = tex2D(_MainTex, i.texcoord) * i.color;

}

return col;

}

另存为。换个名字。然后给UITexture引用就可以了。如下;

当然也可以用脚本动态更改。(传入false则去色)public void SetUITextureColorEnable(UITexture tex, bool enbale)

{

if (tex != null)

{

Debug.LogError("111");

Shader shader = null;

if (enbale == true)

{

shader = Shader.Find("Unlit/Transparent Colored");

}

else

{

shader = Shader.Find("Unlit/Transparent Colored Gray");

}

Debug.LogError(shader.name);

if (tex.shader != shader)

{

tex.shader = shader;

}

}

else

{

Debug.LogError(string.Format("SetUITextureColorEnable tex null/enbale={0}", enbale));

}

}

UISprite的话。需要给图集的材质球更好Shader;

动态的话。如下Material mat = new Material(Shader.Find("Unlit/Transparent Colored Gray"));

atlas.spriteMaterial = mat;

我们可以就一个图集。写一个方法。运行后。将已有的图集动态克隆一份。然后引用新的shader。然后根据条件去取相应的图集。就可了。

修改添加代码。如下:#region 获取图片去色相关

private UIAtlas mHeadIconUIAtlas;

private Material mGrayMaterial;

public void GetGrayIconSprite(UISprite sprite,string spriteName)

{

if (mHeadIconUIAtlas == null)

{

UIAtlas atlas = AssetMgr.GetInstance().GetUIAtlas(AssetType.IconGHead, true);//这里是获取图集。这个根据个人的接口写。用Res.Load 去获取。

mHeadIconUIAtlas = Instantiate(atlas) as UIAtlas;//克隆图集

mGrayMaterial = new Material(Shader.Find("Unlit/Transparent Colored Gray"));//新建材质,并指定Shader

mGrayMaterial.mainTexture = atlas.spriteMaterial.mainTexture;//给材质赋贴图

mHeadIconUIAtlas.spriteMaterial = mGrayMaterial;

}

sprite.atlas = mHeadIconUIAtlas;

sprite.spriteName = spriteName;

}

#endregion

最后。去色Shader下载地址:http://yunpan.cn/csS8MqZbI2kPt  提取码 b8cd

本文链接:

https://bobsong.cn/373.html

unity黑白滤镜_Unity NGUI图片去色黑白效果相关推荐

  1. unity黑白滤镜_unity3D 把图片变黑白的Shader

    //下面是shader Shader "UI/Default Grey" { Properties { [PerRendererData] _MainTex ("Spri ...

  2. unity黑白滤镜_Unity图片处理类,包括压缩、截屏和滤镜

    http://www.cnblogs.com/EndOfYear/p/4334952.html 先上代码: using System.Threading; using UnityEngine; usi ...

  3. unity黑白滤镜_unity颜色分级图像滤镜着色器Fast Mobile Color Grading 1.0

    unity颜色分级图像滤镜着色器Fast Mobile Color Grading 1.0,包含7个着色器,可用于手机游戏或桌面游戏.大多数着色器都经过优化,可在移动设备上平滑运行,同时保持图像良好的 ...

  4. unity黑白滤镜_unity游戏相机滤镜渲染后期色彩处理特效着色器Colorful FX v4.4

    unity游戏相机滤镜渲染后期色彩处理特效着色器Colorful FX v4.4,是一个可快速和自定义的后处理效果,颜色可调整. Colorful FX is a collection of high ...

  5. unity 当前移动方向_Unity小工具:溶解效果(Dissolve)

    溶解效果是一个很基础的效果,本文是对溶解效果的一个简单的总结,作为一个记录以达到技术积累的目的.同时会在GitHub实现一个小例子,来验证理论. 溶解效果 要实现溶解效果,最重要的就是让某些像素显示, ...

  6. unity Shader Graph实现2D图片扭曲波纹效果

    先看效果,制作版本:unity2019.4.2 制作2D图片效果,不需要用到光照信息,所以创建ShaderGraph时选用Unlit Graph. 图片一般都会有透明通道,记得修改Unlit Mast ...

  7. HTML网页黑白滤镜

    HTML网页黑白滤镜 给html标签添加黑白滤镜 实现全站黑白效果 html {-webkit-filter: grayscale(100%);-moz-filter: grayscale(100%) ...

  8. 【图像处理】中的“滤镜算法”:灰度、黑白、反向、去色、单色、高斯模糊、怀旧、连环画

    目录 灰度滤镜 黑白滤镜 反向滤镜 去色滤镜 单色滤镜 高斯模糊滤镜 怀旧滤镜 熔铸滤镜 冰冻滤镜 连环画滤镜 褐色滤镜 灰度滤镜 将颜色的RGB设置为相同的值即可使得图片为灰色,一般处理方法有: 1 ...

  9. Swift - 给图片添加滤镜效果(棕褐色老照片滤镜,黑白滤镜)

    Core Image是一个强大的滤镜处理框架.它除了可以直接给图片添加各种内置滤镜,还能精确地修改鲜艳程度, 色泽, 曝光等,下面通过两个样例演示如何给UIImage添加滤镜. 1,棕褐色滤镜  -  ...

  10. android平台下OpenGL ES 3.0给图片添加黑白滤镜

    OpenGL ES 3.0学习实践 android平台下OpenGL ES 3.0从零开始 android平台下OpenGL ES 3.0绘制纯色背景 android平台下OpenGL ES 3.0绘 ...

最新文章

  1. js 404页面跳转
  2. Core Animation放大缩小;CAKeyframeAnimation
  3. 计算机专业到投行的工作需要的金融财务知识
  4. matlab能输入铁心参数,基于MATLAB的电力机车110伏直流稳压电源仿真研究
  5. 合肥中学计算机老师招聘,2019年合肥北城中学教师招聘公告
  6. 我们是python_我们生活在“Python时代”
  7. Zing加快了JVM应用程序的预热
  8. unity3d 简单动画
  9. Python程序设计语言基础03:基本数据类型
  10. JavaScript嵌套函数this的指向问题
  11. 链表:从尾到头打印链表
  12. oracle winxsx 目录,Mac迅雷瘦身精简教程
  13. 数学建模入门例题python_用Python分析支付宝轻定投收益--Python数学建模实例
  14. 论BOM管理的若干重要问题
  15. 微博营销的价值与注意点
  16. 网络工程师——交换技术(线路交换、分组交换技术、帧中继交换、信元交换技术)
  17. 爬取msdn.itellyou.cn网站
  18. 掌上湘雅服务器无响应是什么情况,掌上湘雅APP查询体检报告
  19. 怎么给手机照片添加文字?没想到方法这么容易,1分钟就能学会
  20. 狗狗的年龄的python编程_狗狗与人年龄换算表,终于知道狗狗多大了!

热门文章

  1. linux里没有vi编辑器怎么办,如果是linux没有vi、vim等编辑器如何操作
  2. Delphi XE 10.2.3使用FastReport 6.0.7
  3. VC知识库BLOG-技术,非技术......
  4. 试图加载 Crystal Reports 运行时出现错误
  5. jmeter404_jmeter压力测试报告
  6. java 反编译 报错_java反编译后再编译成class时提示缺少包
  7. C语言实现简单小游戏
  8. matlab官方中文网站
  9. Windows中使用Netsh Winsock Reset命令解决网络连接问题
  10. c语言各章知识重点(谭浩强版本)