PlayFab Party 聊天权限和静音

概述

PlayFab Party 可以让你对玩家相互通信的方式进行细化控制。 PlayFab Party 需要显式定义每对聊天控件之间的权限,而不是指定团队或频道。 聊天权限系统允许你控制任何一对聊天控件之间的传入和传出语音通信以及传入文本通信。

聊天权限

默认情况下,聊天控件之间的通信处于禁用状态,由游戏来设置每对聊天控件之间的正确PartyChatPermissionOptions。 聊天权限应反映每个聊天控件之间的关系,具体取决于你尝试实现的场景。 例如,在团队对抗场景中,你可能希望设置聊天权限,以允许同一团队成员之间的所有类型的通信、阻止对立团队成员之间的音频通信,以及允许在会话中的每个人之间接收文本。

以下示例将演示如何启用本地和远程聊天控件之间的所有通信。 变量 localChatControlA 指向有效的 PartyLocalChatControl 对象,而 remoteChatControlB 指向表示远程设备上聊天控件的有效 PartyChatControl 对象。

PartyChatPermissionOptions allOptions = PartyChatPermissionOptions::SendAudio | PartyChatPermissionOptions::ReceiveAudio | PartyChatPermissionOptions::ReceiveText;
localChatControlA->SetPermissions(remoteChatControlB, allOptions);

注意

请注意,聊天权限仅在本地应用。 在前面的示例中,仅当 remoteChatControlB 远程配置为允许与 localChatControlA 的所有通信时,才会进行全面双向通信

静音

游戏还能够静音传出音频(PartyLocalChatControl::SetAudioInputMuted())以及来自远程聊天控制(PartyLocalChatControl::SetIncomingAudioInputMuted())的传入音频。 这些静音的状态可以通过各自的 getter 访问,并通过 PartyLocalChatControl::GetChatIndicator()PartyLocalChatControl::GetLocalChatIndicator()返回的聊天指示器进行反映。

静音可以有效为玩家提供某种形式的临时控制,而无需更改在游戏会话开始时可能设置的任何聊天权限。

按下即可发言

应使用本地静音实现按下即可发言。 调用 PartyLocalChatControl::SetAudioInputMuted(false) 以允许使用语音,调用 PartyLocalChatControl::SetAudioInputMuted(true) 以对其进行限制。

团队

假设有 4 个用户(A、B、C 和 D)分别位于各自的独立设备上。 假设用户 A 和用户 B 在蓝队中,用户 C 和用户 D 在红队中。

在用户 A 的设备上:

// Enable all communication with teammate B
localChatControlA->SetPermissions(chatControlB, PartyChatPermissionOptions::SendAudio | PartyChatPermissionOptions::ReceiveAudio | PartyChatPermissionOptions::ReceiveText);

// Disable all communication with opponents
localChatControlA->SetPermissions(chatControlC, PartyChatPermissionOptions::None);
localChatControlA->SetPermissions(chatControlD, PartyChatPermissionOptions::None);

广播

假设用户 A 是发布命令的领导者,而用户 B、C 和 D 只能听。

在用户 A 的设备上:

localChatControlA->SetPermissions(chatControlB, PartyChatPermissionOptions::SendAudio);
localChatControlA->SetPermissions(chatControlC, PartyChatPermissionOptions::SendAudio);
localChatControlA->SetPermissions(chatControlD, PartyChatPermissionOptions::SendAudio);

在用户 B 的设备上:

localChatControlB->SetPermissions(chatControlA, PartyChatPermissionOptions::ReceiveAudio | PartyChatPermissionOptions::ReceiveText);
localChatControlB->SetPermissions(chatControlC, PartyChatPermissionOptions::None);
localChatControlB->SetPermissions(chatControlD, PartyChatPermissionOptions::None);

在用户 C 的设备上:

localChatControlC->SetPermissions(chatControlA, PartyChatPermissionOptions::ReceiveAudio | PartyChatPermissionOptions::ReceiveText);
localChatControlC->SetPermissions(chatControlB, PartyChatPermissionOptions::None);
localChatControlC->SetPermissions(chatControlD, PartyChatPermissionOptions::None);

在用户 D 的设备上:

localChatControlD->SetPermissions(chatControlA, PartyChatPermissionOptions::ReceiveAudio | PartyChatPermissionOptions::ReceiveText);
localChatControlD->SetPermissions(chatControlB, PartyChatPermissionOptions::None);
localChatControlD->SetPermissions(chatControlC, PartyChatPermissionOptions::None);