我的方法在呼叫其他地方或通过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;
}
local 客户端与所有光子服务器的断开连接的双关语回调方法是OnDisconnectedFromPhoton()
。如果调用此方法,则 local 客户端需要首先重新连接到光子服务器,以便能够调用任何其他操作。
local 客户离开房间的双关语回调方法是OnLeftRoom()
。如果调用此方法,则 local 客户端无法再调用房间内的任何操作,例如SetProperties
,这是您尝试通过PhotonNetwork.room.SetCustomProperties
进行的操作。
远程客户离开房间的双关语回调方法是OnPhotonPlayerDisconnected(PhotonPlayer player)
。
在OnDisconnectedFromPhoton()
或OnLeftRoom()
之后无法执行您在ReleaseSlot
中的逻辑。另一方面,如果您想在玩家决定明确离开房间之前打电话给这个,您将不会处理玩家非自愿离开房间的意外断开案件。
因此,当玩家离开房间时,您需要更改免费的团队插槽(或更新得分?!(的方式。您需要从其余的一位玩家(最好是主客户端(那里执行此操作。但是,当房间在主客户端离开后变空时,没有人会致电ReleaseSlot
。当然,这是如果需要处理这种情况。
所以OnPhotonPlayerDisconnected
是一个很好的候选人。
,如果您错过了它,我的同事Tobias已经在讨论中发表了评论 - 与您在Photon的官方论坛上启动。