在Unity 3D中使用PUN2进行VR多人游戏体验时遇到问题

时间:2019-09-09 09:48:52

标签: unity3d multiplayer oculus photon oculusquest

我正在尝试创建一个简单的VR演示,其中两个用户可以连接到房间并操作桌子上的对象。我目前正在关注this tutorial

我已按照步骤进行操作:

  • 复制了LocalAvatarRemoteAvatar的预制件并将它们移至 资源

    创建了脚本PhotonAvatarView脚本

    PhotonAvarViewPhotonView分别配置并配置到两个预制件

问题是我被困在“ 实例化身”部分,特别是在以下部分:

  

例如,以下代码可以放置在您已经存在的代码中   网络管理器或任何其他已经处理网络的脚本   逻辑,它不属于我们创建的PhotonAvatarView脚本   较早。在这里,我们使用OnJoinedRoom回调。

我的假设是,这是一个从头开始的教程(考虑到它是从一个空白的Unity项目开始的),但是我没有任何Network Manager脚本,所以有点困惑。将该代码放入新脚本中,然后仅将其附加到对象上似乎无效。

我缺少一些零件吗?

1 个答案:

答案 0 :(得分:1)

我们收到了您的反馈,本教程将在此基础上进行审核和更新。

为帮助您解决问题并回答问题:

在这种情况下,您需要的NetworkManager以及整个教程都需要实现两个PUN2回调:IMatchmakingCallbacks.OnJoinedRoomIOnEventCallback.OnEvent。尽管本教程可能建议可能有两个单独的类,每个类分别实现每个回调(NetworkManagerMyClass),但也没有反对将它们分组到一个位置的想法。 在本教程的“实例化”部分的第一个代码块中,我们看到OnJoinedRoom方法已被覆盖。这可能意味着原始编写者假定NetworkManager必须扩展MonoBehaviourPunCallbacks类。 从MonoBehaviourPunCallbacks类继承是实现PUN2回调的最简单,最快的方法:它是MonoBehaviour,可让您选择性地覆盖所需的回调,并且仅覆盖需要的回调,它已经处理了回调的注册和注销。您(分别在OnEnableOnDisable中代表您)不需要记住所有回调的接口,并且它还扩展了MonoBehaviourPun,这很容易在属性中公开{​​{1}}如果后者附加到相同的GameObject。但是,您应该小心,因为它不会实现所有回调接口,而是大多数。它实现了PhotonViewIConnectionCallbacksIMatchmakingCallbacksIInRoomCallbacksILobbyCallbacks。它没有实现IWebRpcCallbackIOnEventCallbackIPunInstantiateMagicCallbackIPunObservable。 PUN2的实用程序接口也未实现,例如IPunOwnershipCallbacks

对话很便宜,请告诉我代码:

IPunTurnManagerCallbacks