无法使用 PUN2 在多用户应用程序中共享空间锚点

问题描述 投票:0回答:1

我目前正在为 Meta Quest 3 开发一个应用程序,该应用程序利用多用户直通功能。基于以下参考文章,我已经成功实现了空间锚点放置。

参考文章:Quest 空间锚 - Zenn

但是,下一步是使用 Photon Unity Networking 2 (PUN2) 使应用程序成为多用户。具体来说,我想在多个用户之间共享和同步放置的空间锚点,但我不确定如何实现这一点。

现状:

  • 空间锚点放置在本地环境中可以正常工作。
  • PUN2的基本设置已完成,但我不知道如何共享锚点。

问题: 如何实现 PUN2 以在多用户环境中共享和同步空间锚点?任何具体的代码示例或最佳实践将不胜感激。

附加信息:

  • Unity版本:2022.3
  • PUN2 版本:最新
  • 与空间锚点相关的插件和 SDK:使用 Meta XR All-in-one SDK

附加信息:

  • Unity版本:2022.3
  • PUN2 版本:最新
  • 与空间锚点相关的插件和SDK:使用Meta XR All-in-one SDK

预先感谢您的协助。

c# unity-game-engine oculus photon
1个回答
0
投票

您可以使用 PUN2 的自定义属性来共享您的锚点。

成功创建新锚点后,您可以将其保存在云端以供以后使用。它将返回一个锚点 uuid (Guid)。 有关 Meta 文档的更多信息:https://developers.meta.com/horizon/documentation/unity/unity-spatial-anchors-persist-content/

然后您可以将此 uuid 作为字符串保存在您的 Photon 房间中,如下所示:

    string uuid = anchor.Uuid.ToString();
    
    Hashtable propsToSet = new()
    {
        { _ACTIVE_ANCHOR, uuid }
    };

    PhotonNetwork.CurrentRoom.SetCustomProperties(propsToSet);

其他用户可以检索此 uuid :

    string uuidToConvert;

    uuidToConvert = (string)PhotonNetwork.CurrentRoom.CustomProperties[_ACTIVE_ANCHOR];

    Guid anchorID = new Guid(uuidToConvert);

然后您可以使用 Meta 中的方法来加载具有此 Guid 的锚点。 您必须加载、本地化,然后绑定新锚点。

注意:您需要使用来自 Photon 的哈希表:

using Hashtable = ExitGames.Client.Photon.Hashtable;

希望我能回答你的问题

© www.soinside.com 2019 - 2024. All rights reserved.