效果
直接上效果,如下动图:
实现
这个功能的操作是在用户选中英雄头像后,将头像灰化,即将UI的图片进行黑白化,这里主要通过着色器来实现,因为个人着色器操作不是很多,都是借鉴网上的代码实现。
着色器
灰化的着色器,是面片处理时将颜色进行灰化操作:
fixed4 frag(v2f i) :SV_TARGET{
fixed4 c = i.color;
if (_isGray) {
c.rgb = dot(c.rgb, fixed3(0.22, 0.707, 0.071));
}
return c;
}
UI搭建
UI如上图,主要有三个可选择的头像,有两个禁用和启用的按钮。
逻辑代码
主要的功能:
点击头像有选中效果;
点击按钮后赋值/取消材质球。
using UnityEngine;
using UnityEngine.UI;
public class BanHeroCtrl : MonoBehavIoUr
{
Image NowSelImg; //选中的头像
public Material BanMat; //禁用材质
//选择变化
public void OnSelChange(GameObject go) {
Toggle tog = go.GetComponent<Toggle>();
GameObject Cover = go.transform.Find("Cover").gameObject;
if (tog.isOn)
{
NowSelImg = go.GetComponent<Image>();
Cover.SetActive(false);
}
else
Cover.SetActive(true);
}
//点击禁用
public void ClickBan() {
if (NowSelImg != null)
NowSelImg.material = BanMat;
}
//点击启用
public void ClickUse() {
if (NowSelImg != null)
NowSelImg.material = null;
}
}