我正在尝试创建一个简单的VR演示,其中两个用户可以连接到房间并操作桌子上的对象。我目前正在关注this tutorial。
我已按照步骤进行操作:
复制了LocalAvatar
和RemoteAvatar
的预制件并将它们移至
资源
创建了脚本PhotonAvatarView
脚本
将PhotonAvarView
和PhotonView
分别配置并配置到两个预制件
问题是我被困在“ 实例化身”部分,特别是在以下部分:
例如,以下代码可以放置在您已经存在的代码中 网络管理器或任何其他已经处理网络的脚本 逻辑,它不属于我们创建的PhotonAvatarView脚本 较早。在这里,我们使用OnJoinedRoom回调。
我的假设是,这是一个从头开始的教程(考虑到它是从一个空白的Unity项目开始的),但是我没有任何Network Manager脚本,所以有点困惑。将该代码放入新脚本中,然后仅将其附加到对象上似乎无效。
我缺少一些零件吗?
答案 0 :(得分:1)
我们收到了您的反馈,本教程将在此基础上进行审核和更新。
为帮助您解决问题并回答问题:
在这种情况下,您需要的NetworkManager以及整个教程都需要实现两个PUN2回调:IMatchmakingCallbacks.OnJoinedRoom
和IOnEventCallback.OnEvent
。尽管本教程可能建议可能有两个单独的类,每个类分别实现每个回调(NetworkManager
和MyClass
),但也没有反对将它们分组到一个位置的想法。
在本教程的“实例化”部分的第一个代码块中,我们看到OnJoinedRoom
方法已被覆盖。这可能意味着原始编写者假定NetworkManager必须扩展MonoBehaviourPunCallbacks
类。
从MonoBehaviourPunCallbacks
类继承是实现PUN2回调的最简单,最快的方法:它是MonoBehaviour
,可让您选择性地覆盖所需的回调,并且仅覆盖需要的回调,它已经处理了回调的注册和注销。您(分别在OnEnable
和OnDisable
中代表您)不需要记住所有回调的接口,并且它还扩展了MonoBehaviourPun
,这很容易在属性中公开{{1}}如果后者附加到相同的GameObject。但是,您应该小心,因为它不会实现所有回调接口,而是大多数。它实现了PhotonView
,IConnectionCallbacks
,IMatchmakingCallbacks
,IInRoomCallbacks
和ILobbyCallbacks
。它没有实现IWebRpcCallback
,IOnEventCallback
,IPunInstantiateMagicCallback
和IPunObservable
。 PUN2的实用程序接口也未实现,例如IPunOwnershipCallbacks
。
对话很便宜,请告诉我代码:
IPunTurnManagerCallbacks