RemoveScenePlayer

    /// <summary>
    /// 将玩家从当前所在的场景移除掉, 移除之后此客户端将会进入默认主场景 call回调时已经不包含player对象
    /// </summary>
    /// <param name="player">要执行的玩家实体</param>
    /// <param name="isEntMain">退出当前场景是否进入主场景: 默认进入主场景</param>
    /// <param name="exitCurrentSceneCall">即将退出当前场景的处理委托函数: 如果你需要对即将退出的场景进行一些事后处理, 则在此委托函数执行! 如:退出当前场景通知当前场景内的其他客户端将你的玩家对象移除等功能</param>
    /// <returns></returns>
    public bool RemoveScenePlayer(Player player, bool isEntMain = true, Action<Scene> exitCurrentSceneCall = null)
    {
        if (string.IsNullOrEmpty(player.SceneID))
            return false;
        if (Scenes.TryGetValue(player.SceneID, out Scene scene))
        {
            scene.Remove(player);
            exitCurrentSceneCall?.Invoke(scene);
            if (isEntMain)
            {
                Scene mainScene = Scenes[MainSceneName];
                mainScene.AddPlayer(player);
            }
            return true;
        }
        return false;
    }

最后更新于

这有帮助吗?