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

Unity Shader实现图案滚动:无需外部脚本适配VRChat

Shader内部实现图案滚动替代C#脚本方案

完全可以在Shader内部通过Unity内置时间变量实现和原C#脚本一致的图案滚动效果,不需要外部脚本驱动,完美适配VRChat无法上传自定义脚本的限制。

修改步骤:

  1. 添加Shader参数:在Properties块中补充控制滚动的可配置项,对应原脚本的功能:
// 保留你原有Shader的所有参数...
    [Toggle(_ACT_X)] _ActX = "启用X轴滚动", Float = 1
    _ScrollSpeedX = "X轴滚动速度", Range(0, 0.5) = 0.005
    _MulX = "X轴方向倍率", Float = 1
    [Toggle(_ACT_Y)] _ActY = "启用Y轴滚动", Float = 1
    _ScrollSpeedY = "Y轴滚动速度", Range(0, 0.5) = 0.005
    _MulY = "Y轴方向倍率", Float = 1
    _PatternStr = "图案强度", Float = 0.2
    _PatTex = "图案纹理", 2D = "white" {}
  1. 替换偏移计算逻辑:把原脚本控制的_PatX/_PatY换成时间驱动的滚动偏移,修改Pass中的核心代码:
// 保留原有顶点着色器、编译指令等代码...
#pragma shader_feature _ACT_X _ACT_Y

uniform float _ScrollSpeedX;
uniform float _MulX;
uniform float _ScrollSpeedY;
uniform float _MulY;
uniform float _PatternStr;
uniform sampler2D _PatTex;

float4 frag(v2f i) : SV_Target
{
    // 初始化滚动偏移
    float2 scrollOffset = float2(0, 0);
    
#if _ACT_X
    // 用时间计算X方向偏移,frac保证值循环在0-1区间(对应原脚本到128重置的效果)
    scrollOffset.x = frac(_Time.y * _ScrollSpeedX * _MulX);
#endif

#if _ACT_Y
    scrollOffset.y = frac(_Time.y * _ScrollSpeedY * _MulY);
#endif

    // 采样图案纹理,应用偏移
    float4 pattern = tex2D(_PatTex, i.uv + scrollOffset);
    
    // 保留你原有的亮度调整逻辑
    float3 color = /* 这里是你原有材质颜色的计算代码 */;
    if (all(pattern.rgb == 1)) {
        color.rgb += float3(_PatternStr, _PatternStr, _PatternStr);
    }
    
    return float4(color, 1);
}
ENDCG

参数对应关系:

  • _ActX/_ActY:对应原脚本的ActX/ActY,控制是否开启对应轴的滚动
  • _ScrollSpeedX/_ScrollSpeedY:对应原脚本的step,控制滚动的基础速度
  • _MulX/_MulY:对应原脚本的MulX/MulY,控制滚动方向(负数反向)和速度倍率
  • _Time.y:Unity内置的全局时间变量,自动累加流逝时间,替代原脚本的定时循环逻辑

注意事项:

  • 确保你的_PatTex纹理的Wrap Mode设置为Repeat,这样UV偏移超过1时会自动循环,和原脚本到128重置的效果完全一致
  • 如果需要严格匹配原脚本的128阈值循环,可以把frac()换成fmod(_Time.y * _ScrollSpeedX * _MulX, 128),但实际上纹理Repeat模式下,UV值超过1的部分会自动重复,用frac()更高效且效果一致

内容的提问来源于stack exchange,提问作者DefinitivVair0

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 07:17:01