RemoveScene

    /// <summary>
    /// 移除服务器场景. 从服务器总场景字典中移除指定的场景: 当你移除指定场景后,如果场景内有其他玩家在内, 则把其他玩家添加到主场景内
    /// </summary>
    /// <param name="sceneID">要移除的场景id</param>
    /// <param name="addToMainScene">允许即将移除的场景内的玩家添加到主场景?</param>
    /// <param name="exitCurrentSceneCall">即将退出当前场景的处理委托函数: 如果你需要对即将退出的场景进行一些事后处理, 则在此委托函数执行! 如:退出当前场景通知当前场景内的其他客户端将你的玩家对象移除等功能</param>
    /// <returns></returns>
    public bool RemoveScene(string sceneID, bool addToMainScene = true, Action<Scene> exitCurrentSceneCall = null)
    {
        if (Scenes.TryRemove(sceneID, out Scene scene))
        {
            exitCurrentSceneCall?.Invoke(scene);
            if (addToMainScene)
            {
                Scene mainScene = Scenes[MainSceneName];
                foreach (Player p in scene.Players)
                {
                    mainScene.AddPlayer(p);
                }
            }
            else
            {
                foreach (Player p in scene.Players)
                {
                    scene.OnRemove(p);
                    p.OnRemove();
                    p.Scene = null;
                    p.SceneID = "";
                }
            }
            return true;
        }
        return false;
    }

最后更新于

这有帮助吗?