You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何控制从Blender导出、随mesh一同导入Unity的动画

问题结论

你当前的操作不存在任何问题,Blender完成骨骼绑定、动画制作后导出FBX导入Unity是游戏、3D内容开发领域通用的标准工作流,完全不需要重新制作模型和动画。你查阅到的搭配Character Controller、Unity内制作动画的教程仅覆盖了特定使用场景,和你当前的外部导入动画控制需求不冲突。

导入动画控制实现方案

基础准备

  • 确认导入的FBX中的动画Clip已正常拆分:选中FBX资源,在Inspector面板的Animation选项卡中可以查看、拆分、调整导入的动画片段,确认你需要控制的动画Clip名称正确。
  • 为你的模型对象添加Animator组件:若导入时Unity未自动添加,可在对象的Inspector面板点击Add Component搜索Animator手动添加。
  • 创建Animator Controller资源:在Project窗口右键依次选择Create > Animator Controller,双击打开Animator编辑窗口,将你需要控制的动画Clip拖入编辑窗口设为默认状态。
  • 将创建好的Animator Controller资源拖入模型对象Animator组件的Controller字段完成绑定。

控制脚本编写

新建C#脚本挂载到模型对象上,参考代码如下:

using UnityEngine;

public class ExternalAnimControl : MonoBehaviour
{
    private Animator targetAnimator;
    [Tooltip("动画播放速度:1为正常播放,0为暂停,-1为倒放")]
    public float playSpeed = 1f;
    // 替换为你实际的动画Clip名称
    public string animClipName = "你的动画名称";

    void Start()
    {
        targetAnimator = GetComponent<Animator>();
        // 启动时默认播放动画
        targetAnimator.Play(animClipName);
    }

    void Update()
    {
        // 同步播放速度到Animator组件
        targetAnimator.speed = playSpeed;

        // 按键控制示例,可根据需求修改触发逻辑
        // 按P播放/继续
        if (Input.GetKeyDown(KeyCode.P))
        {
            playSpeed = 1f;
        }
        // 按S暂停
        if (Input.GetKeyDown(KeyCode.S))
        {
            playSpeed = 0f;
        }
        // 按R倒放
        if (Input.GetKeyDown(KeyCode.R))
        {
            playSpeed = -1f;
        }
        // 按空格重置动画到起始位置
        if (Input.GetKeyDown(KeyCode.Space))
        {
            targetAnimator.Play(animClipName, 0, 0f);
        }
    }
}

常见调整需求

  • 若要关闭动画循环:选中对应动画Clip,在Inspector面板取消勾选Loop Time选项即可。
  • 若需要控制多个动画切换:将所有需要用到的动画Clip都拖入Animator Controller窗口,需要切换时调用targetAnimator.Play("目标动画Clip名称")即可。

内容的提问来源于stack exchange,提问作者user15177920

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 09:27:02