Unity Photon PUN调用错误的方法

时间:2017-03-26 07:58:54

标签: c# unity3d photon

我有两个脚本。第一个脚本名为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的类?

2 个答案:

答案 0 :(得分:0)

似乎PUN使用Unity的SendMessage(" MethodName")功能。它在附加到游戏对象的每个MonoBehaviour中调用具有给定名称的方法。在我的情况下,我在同一个游戏对象上有两个脚本,它们有两个名称相同但参数不同的方法。这就是发生错误的原因。

答案 1 :(得分:0)

PUN不会将回调限制为Photon.PunBehaviour。它是可选的,并且有一些好处,但你可以在任何类中实现回调(就像在Unity中一样)。 您可以在PhotonNetwork.SendMonoMessageTargetType中设置类型。这应该将回调限制为你设置的任何内容。