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
相关产品推荐
相关产品推荐

