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

Watson Unity SDK对话跳转异常:仅展示首个节点内容

嘿,问题出在你的Unity代码里!

首先可以确定不是Watson云端配置的问题——毕竟你在云端测试时能正常拿到3段独立文本,说明对话流程的配置是没问题的。问题出在你处理Watson响应的代码逻辑上。

哪里错了?

看你OnConversationResponse方法里这段处理回复文本的代码:

if (messageResponse.output.text.Length > 0)
{
    respText = messageResponse.output.text[0];
}

Watson返回的output.text是一个字符串数组,包含了所有节点的回复内容(也就是你看到的3段文本),但你现在只取了数组里的第一个元素([0]),所以自然只会显示Welcome节点的内容,后面的Dispatch节点文本都被忽略了。

怎么修复?

你需要把数组里的所有文本都取出来,可以选择拼接成一个完整的字符串,或者逐个触发回调显示。这里给你两种方案:

方案1:把所有文本拼接成一个字符串(适合一次性显示)

if (messageResponse.output.text.Length > 0)
{
    // 用换行符把所有文本连起来,也可以换成你需要的分隔符
    respText = string.Join("\n", messageResponse.output.text);
}

方案2:逐个触发回调(适合分批次显示)

如果你的UI需要分段展示这些文本,可以循环遍历数组,每次调用ConversationResponse:

if (messageResponse.output.text.Length > 0)
{
    foreach (string text in messageResponse.output.text)
    {
        // 每次传递一段文本到回调
        ConversationResponse(text, intent, confidence);
    }
    // 注意:如果用这个方案,要把原来单独赋值respText然后调用回调的代码删掉,避免重复触发
}

额外小技巧

你可以加一句日志来确认Watson返回的文本数量,方便调试:

Debug.Log($"Watson返回了{messageResponse.output.text.Length}段文本");

运行后看Unity控制台,应该会显示数字3,这也能进一步验证云端配置是正常的,问题确实在代码的文本提取逻辑上。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:10:16