好友在线的时候,头像是正常显示,离线的情况下,显示灰色的。可以直接提供两种状态下的图片。但是这样比较浪费资源。直接通过修改着色器,实现是比较好的一个方式。
解决方案:
复制一份 Shader "UI/Default". 然后直接修改,这样可以保持ui原来的着色情况。然后直接使用内置的函数Luminance 进行灰度处理
Shader "Unlit/UIGrayScale"
{
Properties
{
[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
_Color ("Tint", Color) = (1,1,1,1)
_StencilComp ("Stencil Comparison", Float) = 8
_Stencil ("Stencil ID", Float) = 0
_StencilOp ("Stencil Operation", Float) = 0
_StencilWriteMask ("Stencil Write Mask", Float) = 255
_StencilReadMask ("Stencil Read Mask", Float) = 255
_ColorMask ("Color Mask", Float) = 15
[Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0
//-------------------add----------------------
[Toggle(UNITY_UI_GRAYSCALE)] _UseUIGray