[ Unity特效 ] 来一发信号干扰效果

本文介绍如何在Unity中实现一种类似信号干扰的UI特效。通过修改Unity内置的UI/Default shader,将图片的UV分段并进行偏移,以达到切割画面的效果。文章分为两个步骤,首先从Unity官网下载内置shader源码,然后在此基础上添加代码实现UV的分段和随机偏移。最终效果支持遮罩,可应用于对话框等场景,并提供了相关属性如偏移强度、种子和片数以控制效果。
摘要由CSDN通过智能技术生成

昨天在B站发现了重装战姬的印象曲。
突然想实现一下这种干扰的效果。
在这里插入图片描述
从画面上看,应该只是将图片的UV分段然后偏移。
这种效果一般UI上面会用的比较多,所以做成UI效果应该会比较好。

第一步

首先先从Unity官网下载当前Unity版本的builtin_shaders;
https://unity3d.com/get-unity/download/archive
Downloads -> Bulit in shaders
这一步是为了拿到Unity默认的UI/Default的shader源码,然后在它的基础上改。
在不改变该shader的基础上可以添加代码,可以应用很多Unity自带的UI效果,比如Mask。
在这里插入图片描述
Unity默认的UI Default里的参数大都是组件调用的,比如Mask组件会改写Stencil相关的属性来达到遮罩的效果,详细请搜模板测试。
Image组件的Color改变的也不是材质的Tint Color,从而在不更换材质的情况下减少了DC。
在UI/Default的shader基础上进行修改,可以“继承”UI的很多功能。

第二步

Shader "UI/ChannelNoise"
{
   
    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

        _NoiseStrength("NoiseStrength", Range(
  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值