iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >unity置灰处理的实现方法
  • 907
分享到

unity置灰处理的实现方法

2023-06-20 16:06:29 907人浏览 泡泡鱼
摘要

这篇文章主要介绍“Unity置灰处理的实现方法”,在日常操作中,相信很多人在unity置灰处理的实现方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”unity置灰处理的实现方法”的疑惑有所帮助!接下来,请跟

这篇文章主要介绍“Unity置灰处理的实现方法”,在日常操作中,相信很多人在unity置灰处理的实现方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”unity置灰处理的实现方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

目录
  • 1 UI对象不可用的时候显示置灰效果

  • 2 场景中所有对象置灰,比如战斗失败时候显示的置灰效果

由于人眼对RGB敏刚程度不同,对绿色的敏感度最高,对红色的敏感度次之,对蓝色的敏感度最低,因此需要对RGB设置不同的权重,来达到灰度显示的效果,比较常用的RGB权重值为 R:0.298912, G:0.586611,B: 0.114478
grayColor.rgb = float3(color.r0.298912 , color.g0.586611 ,color.b*0.114478)

1 UI对象不可用的时候显示置灰效果

通过shader进行控制置灰,shader中添加变量 _ShowGray,在代码中可以通过动态给改变量赋值的方式,控制是否进行置灰显示
shader 代码是通过 Image Effect shader进行简单修改得到的,

Shader "UI/UIGray"{    Properties    {        _MainTex ("Texture", 2D) = "white" {}        [Toggle]_ShowGray("show gray", Range(0,1)) = 0    }    SubShader    {        // No culling or depth        Cull Off ZWrite Off ZTest Always        //-----add code-------        Blend SrcAlpha OneMinusSrcAlpha        //----finish----        Pass        {            CGPROGRAM            #pragma vertex vert            #pragma fragment frag            #include "UnityCG.cginc"            struct appdata            {                float4 vertex : POSITioN;                float2 uv : TEXCOORD0;            };            struct v2f            {                float2 uv : TEXCOORD0;                float4 vertex : SV_POSITION;            };            v2f vert (appdata v)            {                v2f o;                o.vertex = UnityObjectToClipPos(v.vertex);                o.uv = v.uv;                return o;            }            sampler2D _MainTex;            fixed _ShowGray;            fixed4 frag (v2f i) : SV_Target            {                fixed4 col = tex2D(_MainTex, i.uv);                // just invert the colors                //col.rgb = 1 - col.rgb;            //----add code----                fixed gray = dot(col.rgb, float3(0.298912, 0.586611, 0.114478));                col.rgb = lerp(col.rgb, fixed3(gray, gray, gray), _ShowGray);            //-----finish-----                return col;            }            ENDCG        }    }}

2 场景中所有对象置灰,比如战斗失败时候显示的置灰效果

场景置灰,一般采用的是对相机渲染进行设置,在相机上面添加脚本,在OnRenderImage回调方法里面,对渲染对象进行处理
脚本

using System.Collections;using System.Collections.Generic;using UnityEngine;public class PostEffectGray : MonoBehaviour{    public Material grayMaterial;    void OnRenderImage(RenderTexture src, RenderTexture dest)    {        Graphics.Blit(src, dest, grayMaterial);    }}

启用置灰脚本

unity置灰处理的实现方法

禁用置灰脚本

unity置灰处理的实现方法

这里的Gray材质球用的的shader是一个简单的置灰效果shader,代码如下

Shader "Unlit/Gray"{    Properties    {        _MainTex ("Texture", 2D) = "white" {}    }    SubShader    {        Tags { "RenderType"="Opaque" }        LOD 100        Pass        {            CGPROGRAM            #pragma vertex vert            #pragma fragment frag            // make fog work            #pragma multi_compile_fog            #include "UnityCG.cginc"            struct appdata            {                float4 vertex : POSITION;                float2 uv : TEXCOORD0;            };            struct v2f            {                float2 uv : TEXCOORD0;                UNITY_FOG_COORDS(1)                float4 vertex : SV_POSITION;            };            sampler2D _MainTex;            float4 _MainTex_ST;            v2f vert (appdata v)            {                v2f o;                o.vertex = UnityObjectToClipPos(v.vertex);                o.uv = TRANSFORM_TEX(v.uv, _MainTex);                UNITY_TRANSFER_FOG(o,o.vertex);                return o;            }            fixed4 frag (v2f i) : SV_Target            {                // sample the texture                fixed4 col = tex2D(_MainTex, i.uv);                half3 gray = dot(col.rgb, half3 (0.22, 0.707, 0.071));            // apply fog                UNITY_APPLY_FOG(i.foGCoord, col);                return fixed4(gray.rgb, col.a);            }            ENDCG        }    }}

到此,关于“unity置灰处理的实现方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: unity置灰处理的实现方法

本文链接: https://www.lsjlt.com/news/298448.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • unity置灰处理的实现方法
    这篇文章主要介绍“unity置灰处理的实现方法”,在日常操作中,相信很多人在unity置灰处理的实现方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”unity置灰处理的实现方法”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-20
  • unity置灰处理的实现
    目录1 UI对象不可用的时候显示置灰效果2 场景中所有对象置灰,比如战斗失败时候显示的置灰效果由于人眼对RGB敏刚程度不同,对绿色的敏感度最高,对红色的敏感度次之,对蓝色的敏感度最低...
    99+
    2024-04-02
  • Unity后处理效果之边角压暗的实现方法
    本篇内容介绍了“Unity后处理效果之边角压暗的实现方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!我使用的版本为2019.4.12(LT...
    99+
    2023-06-09
  • Unity实现换装系统的方法
    这篇文章主要介绍Unity实现换装系统的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体内容如下1.创建Sprite Library Asset2.添加新目录Label 可以理解为标签,在代码调用过程中使用,将...
    99+
    2023-06-14
  • android 处理配置变更的实现方法
    目录1.配置变更2.处理配置变更之:在配置变更期间保留对象3.处理配置变更之:自行处理配置变更1.配置变更 某些设备配置可能会在运行时发生变化(例如屏幕方向、键盘可用性,以及当用户...
    99+
    2024-04-02
  • unity实现物体延时出现的方法
    小编给大家分享一下unity实现物体延时出现的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!新建一个cube和plane,隐藏cube,脚本挂在plane上。...
    99+
    2023-06-14
  • SpringCloud实现灰度发布的方法步骤
    目录1.什么是灰度发布?2.灰度发布有什么作用?3.灰度发布的实现方式:网关到服务,服务到服务3.1网关到服务代码实现3.2网关到服务代码实现1.什么是灰度发布? 灰度发布又称金丝雀...
    99+
    2024-04-02
  • SpringBoot配置Controller实现Web请求处理的方法
    今天小编给大家分享的是SpringBoot配置Controller实现Web请求处理的方法,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。Controller处理请求由于 在建立 Sp...
    99+
    2023-08-03
  • Unity实现模型点击事件的方法
    模型点击事件监听 触发模型点击事件的必要条件 需要触发模型点击事件的模型身上必须要挂载Collider 组件 方法一 通过 OnMouseDown 函数监听(只能在PC端有效) 1....
    99+
    2024-04-02
  • Unity实现简单换装系统的方法
    小编给大家分享一下Unity实现简单换装系统的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!代码如下:using UnityEngine;using...
    99+
    2023-06-14
  • Java数字图像处理之图像灰度处理怎么实现
    本篇内容介绍了“Java数字图像处理之图像灰度处理怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、简介图像灰度化处理可以作为图像处...
    99+
    2023-07-02
  • Java并行处理的实现方法
    本篇内容介绍了“Java并行处理的实现方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录 背景知识 Java 中的并行处理 扩展线程池方...
    99+
    2023-06-20
  • C++ opencv图像处理实现灰度变换示例
    目录灰度变换概念灰度变换的作用灰度变换的方法灰度化灰度的概念对彩色图进行灰度化1.加权平均值法2.取最大值3.平均值灰度的线性变换1.线性变换2.分段线性变换灰度的非线性变换1.对数...
    99+
    2024-04-02
  • css设置背景图片灰度的方法
    这篇文章将为大家详细讲解有关css设置背景图片灰度的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。css是什么意思css是一种用来表现HTML或XML等文件样式的计算机语言,主要是用来设计网页的样式,...
    99+
    2023-06-06
  • [已解决]IDEA各文件类变成灰色的处理方法
    这是我遇到的问题,创建好一个工程后,各文件类变成了灰色  大概总结网上所说的的原因和处理方法,可能是由于pom.xml没有成功被解析。 解决方法一: 右键点击这个pom文件,选择将其添加为一个maven项目 而还存在右键没有add as ...
    99+
    2023-09-10
    intellij-idea maven java
  • Ubuntu 14.04中重置Unity和Compiz设置的方法
    本篇内容主要讲解“Ubuntu 14.04中重置Unity和Compiz设置的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Ubuntu 14.04中重置Unity和Compiz设置的方法”...
    99+
    2023-06-13
  • Flutter将整个App变为灰色的简单实现方法
    目录前言Flutter中实现整个App变为灰色ColorFiltered(颜色过滤器)追踪源码总结前言 为了让更多的人永远记住12月13日,各大厂都在这一天将应用变灰了。 那么接下...
    99+
    2024-04-02
  • Unity实现游戏伤害数字显示HUD的方法
    目录伤害数字显示HUDDemo展示HUDPopup类伤害数字显示HUD 游戏中收到伤害掉血,会有飘动的伤害数值; 可以使用OnGUI中GUI.Label来实现; 可自定义字体,颜色,...
    99+
    2024-04-02
  • golangjsoniterextension处理动态字段的实现方法
    目录1. 背景2. 可选项总结1. 背景 golang 原生 json 包,在处理 json 对象的字段的时候,是需要严格匹配类型的。但是,实际上,当我们与一些老系统或者脚本语言的系...
    99+
    2023-05-14
    go json动态字段 go 动态字段 go jsoniter extension
  • Spring异常实现统一处理的方法
    目录1.统一处理异常的机制2.关于统一处理异常的方法3.关于处理异常的方法的执行特点1.统一处理异常的机制 Spring MVC框架提供了统一处理异常的机制!表现为每种类型的异常只需...
    99+
    2022-12-08
    Spring异常统一处理 Spring异常处理
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作