【问题标题】:Unity3D - Is it possible to set properties of an animation clip through script?Unity3D - 是否可以通过脚本设置动画剪辑的属性?
【发布时间】:2018-01-16 18:44:02
【问题描述】:

我有一个立方体。当它生成时,它的动画从 0 到 5 的比例,给它一个正在成长的效果。

我的场景中生成了大约 100 个立方体。我希望每个立方体的最大比例是不同的大小(有点变化),但是由于附加到我的立方体预制件的动画剪辑,立方体的最大尺寸将为 5(见图)。

有没有办法通过代码或其他方式将动画的比例属性设置为随机?我尝试过使用AnimatorAnimationClipAnimation,但它们没有设置属性大小的方法或变量。

【问题讨论】:

  • 这里只是一个快速的旁注:如果你想为Transform-specific(或任何其他值)设置动画,你可以考虑使用DOTween

标签: c# animation unity3d


【解决方案1】:

是的,但不是。

这里的“是”是您可以进行一系列调用来获取数据并对其进行修改,但是修改只允许作为编辑器脚本:您可以t 修改运行时播放器环境中的值。

查看文档:https://docs.unity3d.com/ScriptReference/AnimationClip.SetCurve.html

注意:SetCurve 仅在运行时适用于旧动画剪辑。对于非旧版 AnimationClip,它是一个仅限编辑器的功能。

以下脚本示例展示了如何使用动画剪辑对 GameObject 位置进行动画处理。使用 SetCurve() 将动画曲线设置到 AnimationClip。此示例将 x 偏移量从 1.0 向下移动到 0.0。

using UnityEngine;
using System.Collections;

[RequireComponent(typeof(Animation))]
public class ExampleClass : MonoBehaviour {
    public Animation anim;
    void Start() {
        anim = GetComponent<Animation>();
        AnimationCurve curve = AnimationCurve.Linear(0.0F, 1.0F, 2.0F, 0.0F);
        AnimationClip clip = new AnimationClip();
        clip.legacy = true;
        clip.SetCurve("", typeof(Transform), "localPosition.x", curve);
        anim.AddClip(clip, "test");
        anim.Play("test");
    }
}

【讨论】:

  • @Tom 我几乎放弃了,因为我正在研究 Animation 类并且没有找到我想要的东西,最终进入了一个介绍页面,其中 确实 列出了值我很感兴趣,并且能够向后工作,然后找到了那个注释。
  • 除了浮动之外,我们还能设置什么吗?比如如何创建一系列变化的精灵?
  • @JeromeJ 我不知道,我自己没有搞砸过。我的猜测是可能。尝试并报告!
  • @Draco18s 除了使用传统动画剪辑浮动之外,我没有使用任何东西。 UnityEditor.AnimationUtility 可以做更多事情,但顾名思义,您不能在运行时使用它。如果您只想根据需要动态创建基于精灵的动画,那么从头开始重新编码非常容易。
猜你喜欢
  • 2021-01-14
  • 2011-06-08
  • 2021-06-29
  • 2016-04-06
  • 2011-12-23
  • 1970-01-01
  • 1970-01-01
  • 2012-08-04
  • 2010-12-06
相关资源
最近更新 更多