Animator无法为SpriteMask组件的Sprite属性制作动画,求解决方案
解决SpriteMask的Sprite属性无法添加动画的问题
给你几个实际可行的解决思路:
手动通过代码添加动画属性
Unity默认没把SpriteMask的Sprite属性标记为可动画字段,你可以写个简单的Editor脚本强制添加:using UnityEditor; using UnityEditor.Animations; using UnityEngine; public static class SpriteMaskAnimationFix { [MenuItem("Tools/Add SpriteMask Sprite To Animation")] public static void AddSpriteProperty() { GameObject selectedObj = Selection.activeGameObject; if (selectedObj == null) return; SpriteMask mask = selectedObj.GetComponent<SpriteMask>(); if (mask == null) return; Animator animator = selectedObj.GetComponent<Animator>(); if (animator == null || animator.runtimeAnimatorController == null) return; AnimatorController controller = animator.runtimeAnimatorController as AnimatorController; if (controller == null) return; // 获取当前选中的动画剪辑(需要先在动画窗口打开对应的剪辑) AnimationClip clip = UnityEditor.Animations.AnimatorController.GetCurrentAnimatorStateInfo(0).clip; if (clip == null) { Debug.LogError("请先在动画窗口打开要编辑的动画剪辑"); return; } // 添加Sprite属性的动画曲线 EditorCurveBinding binding = EditorCurveBinding.PPtrCurve("", typeof(SpriteMask), "m_Sprite"); AnimationUtility.SetEditorCurve(clip, binding, new AnimationCurve()); Debug.Log("已成功添加SpriteMask的Sprite动画属性"); } }把这个脚本放在
Editor文件夹下,选中带SpriteMask和Animator的对象,打开要编辑的动画剪辑后,点击顶部菜单Tools/Add SpriteMask Sprite To Animation,之后就能在动画窗口里编辑这个属性的关键帧了。用Animator参数+脚本驱动
如果不想写Editor脚本,也可以用运行时脚本配合Animator参数来实现:- 在Animator Controller里添加一个
Sprite类型的参数(比如叫MaskSprite) - 给带SpriteMask的对象挂下面的脚本:
using UnityEngine; public class SpriteMaskAnimatorDriver : MonoBehaviour { private SpriteMask _mask; private Animator _animator; void Awake() { _mask = GetComponent<SpriteMask>(); _animator = GetComponent<Animator>(); } void Update() { Sprite targetSprite = _animator.GetSprite("MaskSprite"); if (targetSprite != null) { _mask.sprite = targetSprite; } } }之后在动画剪辑里给
MaskSprite参数设置关键帧,就能控制SpriteMask的Sprite切换了。- 在Animator Controller里添加一个
检查Unity版本
部分旧版本Unity存在SpriteMask属性无法动画的bug,比如2020.x的某些子版本,升级到对应大版本的稳定版(比如2020.3.x LTS)可能直接解决问题。
内容的提问来源于stack exchange,提问作者Renan Ruan
相关产品推荐
相关产品推荐

