Exemple #1
0
    private void DoStart()
    {
        System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch();
        stopWatch.Start();

        lobbyLuaEnv = new XLua.LuaEnv();
        gameLuaEnv  = new XLua.LuaEnv();
        LuaEnvInit.AddBasicBuiltin(lobbyLuaEnv);
        LuaEnvInit.AddBasicBuiltin(gameLuaEnv);

        // 启动lobby大厅模块
        lobby = new ModuleHub("lobby", null, this, lobbyLuaEnv);

        floader = new FairyGUILoader(lobby);

        lobby.Launch();

        stopWatch.Stop();
        Debug.Log($"Boot.Start total time:{stopWatch.Elapsed.TotalMilliseconds} milliseconds");
    }
Exemple #2
0
    /// <summary>
    /// 新建一个游戏模块
    /// </summary>
    /// <param name="gameModName">游戏模块名字</param>
    public void LaunchGameModule(string gameModName, string jsonString)
    {
        // 只有大厅模块的parent才不为null,其他所有游戏模块的parent必须是null
        if (parent != null)
        {
            // 如果parent不等于null,表示模块是游戏模块,游戏模块不能创建新的游戏模块
            throw new System.Exception($"LaunchGameModule {gameModName} failed, module {modName} not lobby");
        }

        // 检查是否新建重复的游戏模块
        if (subModules.ContainsKey(gameModName))
        {
            throw new System.Exception($"LaunchGameModule {gameModName} failed, duplicate module");
        }

        // 检查是否启动多于一个游戏模块,目前仅允许一个游戏在运行
        if (subModules.Count > 0)
        {
            throw new System.Exception($"LaunchGameModule {gameModName} failed, only support 1 game module on running");
        }

        // 界面必须清空后才能进入子游戏
        var guiChildrenCount = FairyGUI.GRoot.inst._children.Count;

        if (guiChildrenCount > 0)
        {
            throw new System.Exception($"GRoot.inst's children count should be zero, but now it is {guiChildrenCount}");
        }

        // 新建子模块,并添加到子模块列表
        var m = new ModuleHub(gameModName, this, monoBehaviour, Boot.instance.gameLuaEnv);

        subModules.Add(gameModName, m);

        var envString = launchSubModuleLuaCode;

        m.Launch(envString, jsonString);
    }