如何在运行时创建和运行动画?

Posted

技术标签:

【中文标题】如何在运行时创建和运行动画?【英文标题】:How to create and run animation at runtime? 【发布时间】:2021-09-03 06:33:07 【问题描述】:

我目前正在制作游戏,并希望在运行时创建和运行动画。 这是我到目前为止得到的:

void Start()

    Sprite[] sprites = upgrades.GetComponent<uprgades>().sprites;
    AnimationClip animClip = new AnimationClip();
    animClip.frameRate = 60;

    EditorCurveBinding spriteBinding = new EditorCurveBinding();
    spriteBinding.type = typeof(SpriteRenderer);
    spriteBinding.path = "";
    spriteBinding.propertyName = "m_Sprite"; 

    ObjectReferenceKeyframe[] spriteKeyFrames = new ObjectReferenceKeyframe[sprites.Length];
    for(int j = 0; j < (sprites.Length); j++)
    
        spriteKeyFrames[j] = new ObjectReferenceKeyframe();
        spriteKeyFrames[j].time = j;
        spriteKeyFrames[j].value = sprites[j];
    

    AnimationUtility.SetObjectReferenceCurve(animClip, spriteBinding, spriteKeyFrames);
    AnimationClipSettings animClipSett = new AnimationClipSettings();
    animClipSett.loopTime = true;

    animClip.legacy = true; //added
 
    AnimationUtility.SetAnimationClipSettings(animClip, animClipSett);

我不完全了解所有内容,因为我在互联网上找到了这个。但现在我需要开始动画。所以我这样做了:

    Animation anim = someGameObject.GetComponent<Animation>();
    anim.clip = animClip;
    anim.Play();

但这不起作用。我认为这与我没有任何动画师/或控制器有关,但我不知道是否必须添加它们,我应该如何以及在哪里执行此操作

【问题讨论】:

你试过制作AnimationCliplegacy吗? 我已经添加了它(你可以在上面的代码中看到),但它似乎没有改变任何东西 【参考方案1】:

你在哪里运行动画?是在更新功能里吗?

【讨论】:

以上是关于如何在运行时创建和运行动画?的主要内容,如果未能解决你的问题,请参考以下文章

动画运行时 CSS 动画显示在顶部

如何防止css关键帧动画在页面加载时运行?

如何在wpf中动态选择TextBlock动画类型?

UE4在运行时导入动画

如何保持动画在 TabView 视图变化上运行?

悬停时如何停止当前正在运行的动画并更改样式