はじめに
ShaderGraphのTimeノードはTimeScaleの影響を受けてしまうので受けない方法を紹介します
下記画像はTimeScaleの影響を受けてる状態のものです
環境は Unity 2021.3.25f1です
Universal Render Pipeline を使用しています。
作成
最初にShadergraph側でTimeScaleの影響を受けないTimeを格納するためのプロパティを用意します
作成したプロパティにスクリプトでTime.unscaledTimeを入れればTimeScaleの影響を受けないようになります(シーン上に配置すること)
using UnityEngine; public class UnScaleShader : MonoBehaviour { void Start() { } void Update() { //_UnScaleTimeはShaderGraphで設定したReferenceにする Shader.SetGlobalFloat("_UnScaleTime", Time.unscaledTime); //cosine timeの場合 // Shader.SetGlobalFloat("_UnScaleTime", Mathf.Cos(Time.unscaledTime)); } }
完成
下記PlaneのUVスクロールがTimeScaleの影響を受けないようになりました