Unity Photon:点击删除按钮时如何删除房间并踢出所有成员?
实现删除房间并踢出所有成员的方案
核心思路
Photon中仅**房间创建者(Master Client)**有权限销毁房间,设置isOpen和isVisible只是将房间从大厅列表隐藏,并不会销毁房间或踢出成员,需要调用专用API完成操作。
具体实现步骤
验证操作权限
先判断当前玩家是否为Master Client,非创建者无法执行销毁操作:if (!PhotonNetwork.IsMasterClient) { Debug.Log("只有房间创建者才能执行删除操作"); return; }销毁房间并自动踢出所有成员
直接调用PhotonNetwork.DestroyCurrentRoom()方法,该API会自动销毁当前房间,并将所有房间内的玩家踢出,无需单独处理踢人逻辑:PhotonNetwork.DestroyCurrentRoom();处理客户端回调逻辑
在继承自MonoBehaviourPunCallbacks的脚本中重写对应回调,处理玩家被踢出后的界面跳转或状态更新:public override void OnLeftRoom() { // 跳转到大厅场景或刷新界面 SceneManager.LoadScene("LobbyScene"); } public override void OnRoomDestroyed() { Debug.Log("房间已被销毁"); }
可选进阶操作(单独踢人再销毁)
如果需要先明确踢出所有成员再销毁房间,可以遍历玩家列表逐个踢出,最后再销毁房间:
foreach (var player in PhotonNetwork.PlayerList) { if (player != PhotonNetwork.LocalPlayer) { PhotonNetwork.CloseConnection(player); } } // 最后销毁房间 PhotonNetwork.DestroyCurrentRoom();
注意事项
- 所有操作必须在玩家已连接到房间的状态下执行,否则会触发错误。
- 多端测试时需确保所有客户端都能正确接收房间销毁的回调,避免界面状态不一致。
内容的提问来源于stack exchange,提问作者Muhammed Eren
相关产品推荐
相关产品推荐

