博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NGUI图片闪光
阅读量:4647 次
发布时间:2019-06-09

本文共 3457 字,大约阅读时间需要 11 分钟。

先上效果

 

Shader

Shader "Unlit/Transparent Colored Flow Texture"{	Properties	{		_MainTex ("Base (RGB), Alpha (A)", 2D) = "black" {}		_FlashTex("Flash (RGB), Alpha (A)", 2D) = "white" {}		_FlashColor("Flash Color", Color) = (1,1,1,0)		_Interval("Interval", Float) = 5        	}		SubShader	{		LOD 200		Tags		{			"Queue" = "Transparent"			"IgnoreProjector" = "True"			"RenderType" = "Transparent"		}				Pass		{			Cull Off			Lighting Off			ZWrite Off			Fog { Mode Off }			Offset -1, -1			Blend SrcAlpha OneMinusSrcAlpha			CGPROGRAM			#pragma vertex vert			#pragma fragment frag						#include "UnityCG.cginc"			sampler2D _MainTex;			float4 _MainTex_ST;			sampler2D _FlashTex;			float4 _FlashColor;			float _Interval;						struct appdata_t			{				float4 vertex : POSITION;				float2 texcoord : TEXCOORD0;				fixed4 color : COLOR;			};				struct v2f			{				float4 vertex : SV_POSITION;				half2 texcoord : TEXCOORD0;				half2 texcoord1 : TEXCOORD1;				fixed4 color : COLOR;			};				v2f o;			float mymod(float x, float y)			{			  return x - y * floor(x/y);			}			v2f vert (appdata_t v)			{				o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);				o.texcoord = v.texcoord;				o.texcoord1 = o.texcoord;				o.texcoord1.x += mymod(-_Time.w, _Interval) - 1.0f;				o.color = v.color;				return o;			}							fixed4 frag (v2f IN) : COLOR			{				float4 col = tex2D(_MainTex, IN.texcoord) * IN.color;				                            	float4 flashCol = tex2D(_FlashTex,IN.texcoord1)*_FlashColor;				col.rgb = col.rgb + flashCol.rgb * flashCol.w;				                return col;			}			ENDCG		}	}	SubShader	{		LOD 100		Tags		{			"Queue" = "Transparent"			"IgnoreProjector" = "True"			"RenderType" = "Transparent"		}				Pass		{			Cull Off			Lighting Off			ZWrite Off			Fog { Mode Off }			Offset -1, -1			ColorMask RGB			Blend SrcAlpha OneMinusSrcAlpha			ColorMaterial AmbientAndDiffuse						SetTexture [_MainTex]			{				Combine Texture * Primary			}		}	}}

  

  

  

脚本

using UnityEngine;using System.Collections;/*-------------------------------------------------------------------Copyright 2015 Minty Game LTD. All Rights Reserved.Maintained by  bailu -------------------------------------------------------------------bailu				2016-01-26 14:45:52			带流光的UITexture*/[ExecuteInEditMode][RequireComponent(typeof(UITexture))]public class UIFlowTexture : MonoBehaviour {	//流光颜色	[SerializeField]	private Texture FlowTexture = null;	//流光时间间隔	[SerializeField]	private float Interval = 5f;	//流光颜色	[SerializeField]	private Color FlowColor = Color.white;	//被流光的UITexture	private UITexture mUITexture;	void Awake()	{		mUITexture = gameObject.GetComponent
(); } // Use this for initialization void Start () { ResourceManager.PrepareResource
(Resource.Dir.Material + "UITexture_Flow.mat", material => { mUITexture.material = new Material(material); RefreshMaterialProperty(); }); } [ContextMenu("Refresh Material Property")] public void RefreshMaterialProperty() { var mat = mUITexture.material; if(null==mat) { return; } if(null!=FlowTexture) { mat.SetTexture("_FlashTex", FlowTexture); } mat.SetFloat("_Interval", Interval); mUITexture.MarkAsChanged(); }}

  

 

搞法:

1、创建个材质命名成UITexture_Flow.mat,把上面的shader拖拽进去。

2、创建GameObject,挂上UITexture(不用修改的材质,原因是我代码里会去修改他的材质。为什么总是new 新的材质,原因是每个UITexture都要自己流动自己的)

3、然后再挂上UITextureFlow,设置流光的参数

注意:如果你放ScrollView下发现裁剪不正确,那就按照NGUI的shader规则,增加XXX 1.shader,XXX 2.shader。

转载于:https://www.cnblogs.com/mrblue/p/5163030.html

你可能感兴趣的文章
layer---口碑极佳的web弹层组件
查看>>
自己的一些简要学习点
查看>>
HTPJ 1268 GCD
查看>>
hdu2063 匈牙利算法 二分最大匹配模版题
查看>>
工作中的一些经验小结
查看>>
百度地图JavaScript API如何在同一页面显示多个地图?
查看>>
揭秘快速提升alexa排名的18种有效方法-2 -#来秀美#
查看>>
计算机专业及软件开发推荐书籍
查看>>
《Java程序设计》 课程教学
查看>>
Lambda--持续学习中
查看>>
简单谈谈面向对象和面向过程的区别
查看>>
Intellij IDEA 配置Tomcat远程调试
查看>>
python3 进程和线程(一)
查看>>
python-综合练习题(if条件语句,while循环,奇数偶数
查看>>
C语言基础-第三章
查看>>
PowerDesigner教程系列(一)概念数据模型
查看>>
python常用类库总结
查看>>
题解 CF962C 【Make a Square】
查看>>
只读数据文件损坏恢复
查看>>
k8s集群上线web静态网站
查看>>