Unity3D光子在本地播放器断开连接之前调用方法



我的方法在呼叫其他地方或通过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的官方论坛上启动。

相关内容

最新更新