我有两个脚本。第一个脚本名为Launcher
。它源自Photon.PunBehaviour
,旨在仅与PUN方法一起使用。另外,我还有一个名为LauncherUI
的脚本,它来自MonoBehaviour
。
Launcher
引用了LauncherUI
,因此只要Launcher
中发生某些事情,它就可以通过调用某些LauncherUI
方法来更改用户界面。
当用户加入某个会议室时,public override void OnJoinedRoom()
会调用Launcher
,但它也会尝试从public void OnJoinedRoom(int[] playersID)
拨打LauncherUI
,这会导致下一个错误
MissingMethodException:方法OnJoinedRoom的最佳匹配项有一些无效参数。
那么为什么PUN会调用这两种方法,即使其中一种方法属于另一种不是Photon.PunBehaviour
的类?
答案 0 :(得分:0)
似乎PUN使用Unity的SendMessage(" MethodName")功能。它在附加到游戏对象的每个MonoBehaviour中调用具有给定名称的方法。在我的情况下,我在同一个游戏对象上有两个脚本,它们有两个名称相同但参数不同的方法。这就是发生错误的原因。
答案 1 :(得分:0)
PUN不会将回调限制为Photon.PunBehaviour。它是可选的,并且有一些好处,但你可以在任何类中实现回调(就像在Unity中一样)。 您可以在PhotonNetwork.SendMonoMessageTargetType中设置类型。这应该将回调限制为你设置的任何内容。