unity3d 如何在Unity 5中动态更改代码中的关键帧值?

az31mfrm  于 2022-11-15  发布在  其他
关注(0)|答案(2)|浏览(247)

我有一个附有动画制作器的gameObject,它有动画曲线,我需要从代码中动态地改变关键帧的值。我如何访问它们?

s71maibg

s71maibg1#

在实时会话中已经问过这个问题了。答案是你不能,因为动画文件是运行动画控制器的核心。
他们给我的另一种方法是使用传统的SpriteRenderer。
动画控制器不支持值的动态改变。相反,他们提供了Animator让你从动画文件动态改变路径,所以如果你不喜欢使用SpriteRenderer,考虑制作不同的动画文件和路径到你的Animator。

oyxsuwqo

oyxsuwqo2#

如果“dynamically”仍然表示editor-time,则可以使用UnityEditor.AnimationUtility,它提供了获取和设置曲线、关键帧等的方法。
用户可以使用AnimationUtility.GetCurveBindings()或AnimationUtility.GetObjectReferenceCurveBindings()检索绑定。使用AnimationUtility.GetObjectReferenceCurve()用户可以获取关键帧,进行修改并使用AnimationUtility.SetObjectReferenceCurve()应用它
运行时-可能仅使用变通方法。
例如,通过某个自定义脚本中的某个动画中继值,然后在更新时将所需的值应用于实际属性()--一种自定义约束。在其中,你可以通过运行时的代码应用自定义修改。但是在编辑器时间和动画时,预览会被破坏,因为你不会直接动画属性,但只有那个中继值。也许可以在自定义约束行为中使用[ExecuteInEditMode]和AnimationMode.InAnimationMode()来模拟预览。但所有这些都是实验性的。

相关问题