邀请朋友加入房间(PlayFab、PUN+ 和 Unity)

Invite a friend to a room (PlayFab, PUN+ and Unity)

我正在为我们的游戏添加新功能。我想为玩家提供邀请朋友加入房间的选项。

该功能的确切描述如下: 玩家 A 创建一个房间并邀请玩家 B 加入,玩家 B 必须满足以下条件才能看到邀请: 1. 是玩家 A 的 facebook 好友。 2.在线并在大厅内。

我遵循的方法如下: 我正在使用 PlayFab 保存玩家数据和在线状态。 用户第一次使用 Facebook 登录时,将创建该玩家的 PlayFab 记录,此条目包括 Facebook 好友列表和在线状态等数据(每个玩家的在线状态使用 OnDisconnectedFromPhoton 和 OnJoinedLobby 回调更新)

当玩家A点击房间内的邀请按钮时,会显示他的在线好友列表(获取Facebook好友列表-->检查PlayFab记录以检索他们的在线状态-->显示在线的Facebook好友).然后玩家选择他们想要邀请的朋友。

这是我遇到困难的部分。有没有办法在大厅向这个玩家发送邀请消息,包括房间号和被邀请的用户ID? 例如,我正在考虑将消息发送给大厅中的所有玩家,然后仅将其显示给玩家 B(如果消息中包含的 userId == 玩家 B userId,则显示消息)。但我希望有一个更有效的解决方案,因为每次发送邀请时都向大厅中的所有玩家发送一条消息看起来有点矫枉过正!

你能想出更好的方法吗?

您无法向光子大厅中的玩家发送消息。您应该通过其他渠道邀请玩家,例如 fb api 消息。受邀用户从消息中获取房间名称并可以加入房间。

在移动平台上,一种常见的方法是使用推送通知来启用此功能。另一种方法是使用共享组数据 (https://api.playfab.com/Documentation/Client#Shared%20Group%20Data) 向其他人发出 post 邀请,并让客户端定期 "heartbeat" 检查这些消息。使用此功能,您可以使用接收邀请(以及可能的其他消息)的用户的 PlayFab ID 创建共享组数据,并使用邀请他们的用户的 PlayFab ID 添加消息作为 [=17= 的密钥] 对你正在写入共享组数据。

与其处理将玩家添加到共享组数据的麻烦(允许客户端直接写入),另一种简化方法是使用云脚本 (https://playfab.com/docs/using-cloud-script/) 来控制写了什么。