Example #1
0
    void Start()
    {
        GameObject.DontDestroyOnLoad(this.gameObject);
        //CS init
        TimerMgr.Initilize();              //计时器
        AtlasMgr.Instance.initialize();    //图集管理器初始化
        ResMgr.Instance.initialize();      //资源接口管理类初始化
        ManifestMgr.Instance.initialize(); //依赖文件初始化
        PoolMgr.Instance.initialize();     //对象池初始化
        LoaderMgr.Instance.initialize();   //加载管理器初始化
        UIMgr.Instance.initialize();       //画布初始化 不需要初始化

        //Lua init
        luaAgent = new LuaEnv();                //全局lua代理
        luaAgent.DoString("require 'LuaInit'"); //Lua初始化 在Lua那边

        scriptEnv = luaAgent.NewTable();
        LuaTable meta = luaAgent.NewTable();

        meta.Set("__index", luaAgent.Global);
        scriptEnv.SetMetaTable(meta);
        meta.Dispose();
        scriptEnv.Set("self", this);
        foreach (var injection in injections)
        {
            scriptEnv.Set(injection.name, injection.value);
        }
        luaAgent.DoString("require 'LuaBehavior'", "LuaBehaviour", scriptEnv);
        // Action luaAwake = scriptEnv.Get<Action>("awake");
        scriptEnv.Get("start", out luaStart);
        scriptEnv.Get("update", out luaUpdate);
        scriptEnv.Get("onTick", out luaTick);
        scriptEnv.Get("ondestroy", out luaOnDestroy);

        if (luaStart != null)
        {
            luaStart();
        }
        // initClock();
    }