如何在Unity中创建带多色流动动画的Material?
Unity 网格流动霓虹材质制作教程
准备工作
- 确保你的Unity项目启用了URP(通用渲染管线),ShaderGraph和发光效果在URP下更易实现
- 准备好要应用材质的模型(灯管、立方体等)
方法一:用ShaderGraph可视化制作(新手友好)
创建ShaderGraph文件
在Project窗口右键 →Create→Shader→Universal Render Pipeline→Unlit Shader Graph,双击打开编辑器。搭建节点网络
- 拖入核心节点:
Time(驱动动画)、UV(模型UV坐标)、3个Color节点(设置不同霓虹色)、Slider(命名Flow Speed,控制流动快慢)、Frac(取小数实现循环)、Floor(取整做颜色分段) - 实现UV流动:将
Time节点的Time输出乘以Flow Speed,加到UV节点的X分量上(想纵向流动就加给Y),得到随时间移动的UV。 - 颜色分段循环:把流动后的UV的X分量乘以颜色分段数(比如3),用
Frac取0-1的循环值,再用Floor得到0、1、2的整数标记。用Lerp节点依次混合三个颜色:先混合颜色1和2,根据标记是否为1;再把结果和颜色3混合,根据标记是否为2。 - 增强发光:把最终颜色乘以一个
Slider(命名Brightness,值设2-3),链接到Unlit Master节点的Emission端口(也可同时连Base Color)。想要颜色边界更柔和,用SmoothStep节点替换Floor的硬过渡。
- 拖入核心节点:
创建并调整材质
保存ShaderGraph后,右键创建Material,选择刚才的ShaderGraph作为材质的Shader。在材质面板里调整颜色、流动速度、亮度,实时预览效果。
方法二:手写简化Shader(快速实现)
创建一个Unlit Shader,替换成以下代码:
Shader "Custom/NeonFlow" { Properties { _Color1 ("Color 1", Color) = (1,0,0,1) _Color2 ("Color 2", Color) = (0,1,0,1) _Color3 ("Color 3", Color) = (0,0,1,1) _Speed ("Flow Speed", Float) = 2.0 _Brightness ("Brightness", Float) = 2.0 _Tile ("Color Count", Float) = 3.0 } SubShader { Tags { "RenderType"="Transparent" "Queue"="Transparent" } LOD 100 Pass { ZWrite Off Blend SrcAlpha One 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; }; fixed4 _Color1; fixed4 _Color2; fixed4 _Color3; float _Speed; float _Brightness; float _Tile; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = v.uv; return o; } fixed4 frag (v2f i) : SV_Target { float2 movingUV = i.uv; movingUV.x += _Time.y * _Speed; float t = frac(movingUV.x * _Tile); fixed4 col; if(t < 1.0/3.0) col = _Color1; else if(t < 2.0/3.0) col = _Color2; else col = _Color3; col *= _Brightness; return col; } ENDCG } } }
创建材质选择这个Shader,调整参数即可快速得到效果。
应用到模型
直接把材质拖到场景中的模型上,或者在模型的Mesh Renderer组件的Materials栏里替换材质。
小技巧
- 如果流动方向不对,修改Shader里的UV分量(比如把
movingUV.x改成movingUV.y),或者在模型的Import Settings里调整UV布局。 - 加Unity的Post Processing(Bloom效果)能让霓虹的光晕更真实。
- 想要流动有波动,可以把
_Time.y * _Speed改成sin(_Time.y) * _Speed。
内容的提问来源于stack exchange,提问作者nicover
相关产品推荐
相关产品推荐

