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

Unity对话系统中如何检测当前语句并触发角色动画?

实现对话结束时播放对应动画的方案

你的代码里已经用Index变量记录了当前正在播放的句子索引,完全可以利用它判断当前语句,进而触发对应动画。下面是具体修改步骤:

1. 添加动画组件引用

在DialogueController类中添加公开的Animator变量,用来控制角色动画:

public TextMeshProUGUI DialogueText;
public string[] Sentences;
private int Index = 0;
public float DialogueSpeed;
bool collide = false;
private bool nextText = true;
// 新增:引用角色的Animator组件
public Animator characterAnimator;

2. 在对话结束时触发对应动画

修改WriteSentence协程,在句子播放完成(说话停止)时,根据刚播放完的句子索引(注意Index在循环结束后会自增,所以用Index-1获取当前完成的句子下标)播放对应动画:

IEnumerator WriteSentence()
{
    // 可选:开始说话时切换到"说话中"动画
    characterAnimator.SetBool("IsTalking", true);
    
    foreach(char Character in Sentences[Index].ToCharArray()) 
    {
        DialogueText.text += Character;
        yield return new WaitForSeconds(DialogueSpeed);
    }
    
    // 说话停止,关闭"说话中"状态
    characterAnimator.SetBool("IsTalking", false);
    
    // 根据刚播放完的句子索引,触发对应结束动画
    int finishedSentenceIndex = Index - 1;
    switch(finishedSentenceIndex)
    {
        case 0:
            // 替换成你第1句结束的动画名称
            characterAnimator.Play("Sentence1_EndAnim");
            break;
        case 1:
            characterAnimator.Play("Sentence2_EndAnim");
            break;
        case 2:
            characterAnimator.Play("Sentence3_EndAnim");
            break;
        // 按你的句子数量继续添加case分支
    }
    
    Index++;
    nextText = true;
}

3. 处理全部对话结束的收尾动画

如果需要在所有对话说完后播放收尾动画,修改NextSentence方法:

void NextSentence()
{
    if (Index <= Sentences.Length - 1)
    {
        DialogueText.text = "";
        StartCoroutine(WriteSentence());
    }
    else
    {
        // 所有对话完成,播放最终收尾动画
        characterAnimator.Play("AllDialogue_FinishedAnim");
        collide = false; // 关闭对话触发状态,避免重复触发
    }
}

动画设置注意事项

  • 在Unity Animator窗口中,给角色创建对应动画状态:用IsTalking布尔参数控制说话循环动画,各个SentenceX_EndAnim对应单句结束的动画,AllDialogue_FinishedAnim对应全部对话结束的动画。
  • 将角色的Animator组件拖到DialogueController的characterAnimator字段中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 22:00:21