For the complete documentation index, see llms.txt. This page is also available as Markdown.

根据可用性控制 UI

根据对话可用性控制自定义聊天输入框或麦克风按钮,使玩家输入要等到角色能听到时才生效。

将你自己的聊天输入框、麦克风按钮或发送操作绑定到 ConvaiManager.ConversationAvailability 这样它只有在被提及的角色确实能听到时才接受输入。构建自定义输入 UI 而不是使用随附的聊天输入框时,请使用此页面,因为后者已经会自行进行门控——请参见 自定义聊天输入框提示 如果你配置的正是这个。

前提条件

读取当前判定结果

ConvaiManager.ConversationAvailability 返回当前 ConvaiConversationAvailability 用于 ConvaiManager.AddressedCharacter。调用 CanAcceptPlayerInput() 在结果上调用它,以获得 UI 所需的单个布尔值:

using Convai.Runtime.Components;
using UnityEngine;
using UnityEngine.UI;

public class SendButtonGate : MonoBehaviour
{
    [SerializeField] private ConvaiManager _manager;
    [SerializeField] private Button _sendButton;

    private void Update()
    {
        _sendButton.interactable = _manager.ConversationAvailability.CanAcceptPlayerInput();
    }
}

改为响应变更事件,而不是轮询

ConvaiManager.ConversationAvailabilityChanged 每当判定发生变化时都会触发,包括玩家开始对另一个可用性不同的角色说话时。订阅它,以便立即更新 UI,而不是等到下一帧:

针对特定角色进行门控,而不是针对当前被提及的角色

绑定到某个特定角色的 UI 元素——例如名牌、多角色场景中的按角色指示器——应当读取 ConvaiCharacter.ConversationAvailability 该角色本身,而不是 ConvaiManager.ConversationAvailability,后者始终返回当前被提及对象的结果:

验证门控

进入 Play 模式,连接后,在角色尚未被确认之前尝试输入或按发送。门控应阻止该操作,直到可用性报告为止 就绪 或 Answering。在对话中途断开该角色,并确认门控会再次关闭。

下一步

响应玩家开始说话对话可用性参考

最后更新于

这有帮助吗?