unity使用playable播放动画,简洁版本

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Animations;
using UnityEngine.Playables;

public class MonsterPlayableTest : MonoBehaviour
{
    //需要赋值
    public AnimationClip idleClip;
    public AnimationClip attackClip;

    private PlayableGraph graph;
    private AnimationPlayableOutput output;
    private AnimationClipPlayable idlePlayable;
    private AnimationClipPlayable attackPlayable;
    
    private bool isAttacking = false;
    
    void Start()
    {
        var animator = GetComponent<Animator>();
        graph = PlayableGraph.Create("AnimGraph");
        graph.SetTimeUpdateMode(DirectorUpdateMode.GameTime);

        output = AnimationPlayableOutput.Create(graph, "AnimOutput", animator);

        idlePlayable = AnimationClipPlayable.Create(graph, idleClip);
        attackPlayable = AnimationClipPlayable.Create(graph, attackClip);

        graph.Play();
    }
    
    void Update()
    {
        // 按下K时播放攻击动画
        if (Input.GetKeyDown(KeyCode.K))
        {
            PlayAttack();
        }

        // 检查 attack 播放完毕,恢复 idle
        if (Input.GetKeyDown(KeyCode.L))
        {
            PlayIdle();
        }
    }
    
    void PlayAttack()
    {
        output.SetSourcePlayable(attackPlayable);
        attackPlayable.SetTime(0);
    }

    void PlayIdle()
    {
        output.SetSourcePlayable(idlePlayable);
        idlePlayable.SetTime(0);
    }
    
    void OnDisable()
    {
        graph.Destroy();
    }
}

 

posted @ 2025-08-04 14:29  三页菌  阅读(27)  评论(0)    收藏  举报