You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Unity中创建带多色流动动画的Material?

Unity 网格流动霓虹材质制作教程

准备工作

  • 确保你的Unity项目启用了URP(通用渲染管线),ShaderGraph和发光效果在URP下更易实现
  • 准备好要应用材质的模型(灯管、立方体等)

方法一:用ShaderGraph可视化制作(新手友好)

  1. 创建ShaderGraph文件
    在Project窗口右键 → Create → Shader → Universal Render Pipeline → Unlit Shader Graph,双击打开编辑器。

  2. 搭建节点网络

    • 拖入核心节点: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的硬过渡。
  3. 创建并调整材质
    保存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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 18:53:30