Unity3D Photon在本地播放器断开连接之前调用一个方法
Unity3D Photon Call A Method Before Local Player Disconnected
我有一个方法在调用其他地方或通过 ui 按钮调用时效果很好。
我遇到了这个问题:
我需要在 本地播放器断开连接之前调用此方法。
如果我使用 "OnPhotonPlayerDisconnected()" 它不能正常工作,因为它是从远程播放器调用的,而不是本地的。
我也测试了 "OnLeftRoom()" 方法,但它甚至没有调用。
我的方法在这里:
public void ReleaseSlot()
{
Slots[slotIndex] = true;
Hashtable SlotManagerHashtable = new Hashtable();
SlotManagerHashtable.Add("teamslot" + slotIndex.ToString(), false);
PhotonNetwork.room.SetCustomProperties(SlotManagerHashtable, null, false);
alreadyJoined = false;
}
本地客户端与所有Photon服务器断开连接的PUN回调方法是OnDisconnectedFromPhoton()
。
如果调用此方法,则 local 客户端需要先重新连接到 Photon 服务器才能调用任何其他操作。
本地客户端离开房间时的PUN回调方法是OnLeftRoom()
。如果调用此方法,则 local 客户端将无法再调用房间内的任何操作,例如 SetProperties
,这是您尝试通过 PhotonNetwork.room.SetCustomProperties
执行的操作。
当远程客户端离开房间时的PUN回调方法是OnPhotonPlayerDisconnected(PhotonPlayer player)
。
您在 ReleaseSlot
中的逻辑无法在 OnDisconnectedFromPhoton()
或 OnLeftRoom()
之后执行。另一方面,如果你想在玩家决定明确离开房间之前调用它,你将不会处理玩家非自愿离开房间的意外断开连接的情况。
所以当玩家离开房间时,您需要更改释放团队位置(或更新分数?!)的方式。您需要从其余玩家之一(最好是主客户端)执行此操作。但是,当主客户离开后房间变空时,将没有人留下来打电话ReleaseSlot
。当然,这是为了万一这种情况需要处理。
所以 OnPhotonPlayerDisconnected
是一个很好的候选人。
如果你错过了,我的同事 Tobias 已经发布了 a comment on the discussion -identical to this one- that you started on Photon's official forum。
我有一个方法在调用其他地方或通过 ui 按钮调用时效果很好。
我遇到了这个问题: 我需要在 本地播放器断开连接之前调用此方法。
如果我使用 "OnPhotonPlayerDisconnected()" 它不能正常工作,因为它是从远程播放器调用的,而不是本地的。
我也测试了 "OnLeftRoom()" 方法,但它甚至没有调用。
我的方法在这里:
public void ReleaseSlot()
{
Slots[slotIndex] = true;
Hashtable SlotManagerHashtable = new Hashtable();
SlotManagerHashtable.Add("teamslot" + slotIndex.ToString(), false);
PhotonNetwork.room.SetCustomProperties(SlotManagerHashtable, null, false);
alreadyJoined = false;
}
本地客户端与所有Photon服务器断开连接的PUN回调方法是OnDisconnectedFromPhoton()
。
如果调用此方法,则 local 客户端需要先重新连接到 Photon 服务器才能调用任何其他操作。
本地客户端离开房间时的PUN回调方法是OnLeftRoom()
。如果调用此方法,则 local 客户端将无法再调用房间内的任何操作,例如 SetProperties
,这是您尝试通过 PhotonNetwork.room.SetCustomProperties
执行的操作。
当远程客户端离开房间时的PUN回调方法是OnPhotonPlayerDisconnected(PhotonPlayer player)
。
您在 ReleaseSlot
中的逻辑无法在 OnDisconnectedFromPhoton()
或 OnLeftRoom()
之后执行。另一方面,如果你想在玩家决定明确离开房间之前调用它,你将不会处理玩家非自愿离开房间的意外断开连接的情况。
所以当玩家离开房间时,您需要更改释放团队位置(或更新分数?!)的方式。您需要从其余玩家之一(最好是主客户端)执行此操作。但是,当主客户离开后房间变空时,将没有人留下来打电话ReleaseSlot
。当然,这是为了万一这种情况需要处理。
所以 OnPhotonPlayerDisconnected
是一个很好的候选人。
如果你错过了,我的同事 Tobias 已经发布了 a comment on the discussion -identical to this one- that you started on Photon's official forum。