Unity3D Shader实现扫描显示效果
更新时间:2020年6月25日 10:37 点击:1610
本文实例为大家分享了Unity3D Shader实现扫描显示的具体代码,供大家参考,具体内容如下
通过Shader实现,从左向右的扫描显示,可自定义扫描颜色、宽度、速度。
效果图如下
编辑器界面如下
Shader源码如下
Shader "XM/ScanEffect" { Properties { _MainTex("Main Tex", 2D) = "white"{} _lineColor("Line Color", Color) = (0,0,0,0) _lineWidth("Line width", Range(0, 1.0)) = 0.1 _rangeX("Range X", Range(0,1.0)) = 1.0 } SubShader { Tags { "Queue" = "Transparent" } ZWrite Off Blend SrcAlpha OneMinusSrcAlpha Cull back Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "Lighting.cginc" sampler2D _MainTex; float4 _MainTex_ST; float4 _lineColor; float _lineWidth; float _rangeX; struct a2v { float4 vertex : POSITION; float4 texcoord : TEXCOORD0; }; struct v2f { float4 pos : SV_POSITION; float2 uv : TEXCOORD0; }; v2f vert(a2v v) { v2f o; o.pos = mul(UNITY_MATRIX_MVP, v.vertex); o.uv = TRANSFORM_TEX(v.texcoord, _MainTex); return o; } fixed4 frag(v2f i) : SV_TARGET { fixed4 col = tex2D(_MainTex, i.uv); if(i.uv.x > _rangeX) { clip(-1); } else if (i.uv.x > _rangeX - _lineWidth) { float offsetX = i.uv.x - _rangeX +_lineWidth; fixed xAlpha = offsetX / _lineWidth; col = col * (1 - xAlpha) + _lineColor * xAlpha; } return col; } ENDCG } } FallBack "Diffuse" }
代码调用如下
using UnityEngine; using System.Collections; public class ScanEffect : MonoBehaviour { //默认扫描线的宽 [Range(0,1)] public float _defaultLineW = 0.2f; //扫描的速度 [Range(0, 1)] public float _showSpeed = 0.02f; private MeshRenderer _render; private void Awake() { _render = GetComponent<MeshRenderer>(); SetX(0); SetLineWidth(0); } public void SetLineWidth(float val) { _render.material.SetFloat("_lineWidth", val); } public void SetX(float val) { _render.material.SetFloat("_rangeX", val); } public void Show() { StopCoroutine("Showing"); StartCoroutine("Showing"); } public void Hide() { StopCoroutine("Showing"); SetX(0); SetLineWidth(0); } private IEnumerator Showing() { float deltaX = 0; float deltaWidth = _defaultLineW; SetX(deltaX); SetLineWidth(deltaWidth); while (true) { if (deltaX != 1) { deltaX = Mathf.Clamp01(deltaX + _showSpeed); SetX(deltaX); } else { if (deltaWidth != 0) { deltaWidth = Mathf.Clamp01(deltaWidth - _showSpeed); SetLineWidth(deltaWidth); } else { break; } } yield return new WaitForEndOfFrame(); } } public void OnGUI() { if (GUILayout.Button("Show")) { Show(); } if (GUILayout.Button("Hide")) { Hide(); } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持猪先飞。
相关文章
- 这篇文章主要介绍了springboot多模块包扫描问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-09-16
- 这篇文章主要为大家详细介绍了Unity3D UGUI实现翻书特效,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
- 这篇文章主要为大家详细介绍了Unity shader实现遮罩效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
- 这篇文章主要介绍了python 实现的IP 存活扫描脚本,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下...2020-12-11
- 这篇文章主要为大家详细介绍了Unity Shader实现径向模糊效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-08-09
- 这篇文章主要为大家详细介绍了Unity Shader实现2D水流效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
- 这篇文章主要为大家详细介绍了Unity3D实现飞机大战游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-11-03
- 这篇文章主要为大家详细介绍了Unity3D使用GL实现图案解锁功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
- 这篇文章主要介绍了Go语言扫描目录并获取相关信息的方法,实例分析了Go语言操作目录及文件的技巧,需要的朋友可以参考下...2020-05-05
- 这篇文章主要为大家详细介绍了Unity Shader实现描边OutLine效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
- 这篇文章主要为大家详细介绍了iOS实现雷达扫描效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-10-11
- 这篇文章主要为大家详细介绍了Unity Shader实现裁切效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
- 这篇文章主要为大家详细介绍了Unity Shader实现水墨效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
Unity3D游戏开发数据持久化PlayerPrefs的用法详解
在本篇文章里小编给大家整理了关于Unity3D游戏开发之数据持久化PlayerPrefs的使用的相关知识点内容,需要的朋友们参考下。...2020-06-25- 这篇文章主要介绍了Python 实现敏感目录扫描的示例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-05-21
- 这篇文章主要为大家详细介绍了iOS自定义雷达扫描扩散动画,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-10-11
- 这篇文章主要介绍了Unity3D基于OnGUI实时显示FPS,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
- 这篇文章主要为大家详细介绍了Untiy Shader实现纹理贴图滚动,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
- 这篇文章主要为大家详细介绍了Unity3D仿写Button面板事件绑定功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
- 这篇文章主要为大家详细介绍了unity3D实现三维物体跟随鼠标,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25