Unity3d C#模仿实现王者荣耀英雄禁用灰化黑白化功能含工程源码

效果

直接上效果,如下动图:

在这里插入图片描述

实现

这个功能的操作是在用户选中英雄头像后,将头像灰化,即将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;
    }
}

项目源码

https://download.csdn.net/download/qq_33789001/19712212

相关文章

前言 本文记录unity3D开发环境的搭建 unity安装 unity有中文...
前言 有时候我们希望公告牌跟随镜头旋转永远平行面向屏幕,同...
前言 经过一段时间的学习与实际开发,unity3D也勉强算是强行...
前言 在unity中我们常用的获取鼠标点击的方法有: 1、在3D场...
前言 在之前的例子中,我们都没有用到unity的精髓,例如地形...
这篇文章将为大家详细讲解有关Unity3D中如何通过Animator动画...