Unity Shader Graph非运行模式下动画停止,仅窗口交互时恢复问题求助
解决Shader Graph非运行模式动画停止问题(Linux下Unity)
问题原因
这是Unity编辑器在Linux平台的后台帧率限制机制导致的——当编辑器窗口未获得焦点或用户无操作时,会自动降低后台渲染帧率以节省资源,而Shader Graph里的Time节点依赖编辑器的更新循环,帧率被限制后动画便会停滞。
解决方法
1. 关闭编辑器后台帧率限制
打开Unity的Edit > Preferences > Performance面板,找到Background Frame Rate选项,将其设置为与前台一致的数值(比如60),或者直接设为-1以禁用后台帧率限制。
2. 用Editor脚本强制持续更新
如果上述方法无效,可以通过自定义脚本强制编辑器在非运行模式下持续更新:
using UnityEditor; using UnityEngine; [InitializeOnLoad] public class ForceEditorUpdate { static ForceEditorUpdate() { EditorApplication.update += () => { if (!EditorApplication.isPlaying) { SceneView.RepaintAll(); GameView.RepaintAll(); } }; } }
将脚本放在Assets/Editor目录下,编辑器启动后会自动生效,强制场景视图和游戏视图持续重绘,确保Time节点正常更新动画。
3. 开启Scene视图实时渲染
在Scene视图右上角找到Auto Render按钮(播放图标样式),开启后Scene视图会持续渲染,无需用户操作也能正常播放Shader动画。
注意事项
- 禁用后台帧率限制或强制持续更新会提升CPU/GPU占用,无需预览动画时建议恢复默认设置。
- 该问题仅存在于Linux平台Unity编辑器的非运行模式,运行模式下Unity会以正常帧率运行,因此不会出现此问题。
内容的提问来源于stack exchange,提问作者Doruk
相关产品推荐
相关产品推荐

