You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 05:41:19