示例#1
0
        // Use this for initialization
        void Start()
        {
            Application.targetFrameRate = 30;

            SystemManager.Instance().Initialize(this);
            UIManager.Instance().Initialize(mLayers);
            TableManager.Instance().Initialize(@"Data/Table/");
            AssetBundleManager.Instance().Initialize(this, mBaseConfigUrl + CommonFunction.getPlatformString() + "/");

            Object.DontDestroyOnLoad(this);

            StartCoroutine(StartCheckVersion());
        }
示例#2
0
        protected T _LoadResFromStreamingAssetsBundle <T>(ResourceInfoTable resInfoItem, AssetType eAssetType, int iHashCode) where T : UnityEngine.Object
        {
            if (resInfoItem.Path.Count > 1)
            {
                AssetBundle assetBundle = AssetBundleManager.Instance().getAssetBundle(resInfoItem.Path[0]);

                if (null == assetBundle)
                {
                    LoggerManager.Instance().LogProcessFormat("get assetbundle failed name = {0} ...", resInfoItem.Path[0]);
                    return(default(T));
                }

                return(_LoadResFromAssetBundle <T>(resInfoItem, assetBundle, iHashCode));
            }

            LoggerManager.Instance().LogErrorFormat("_LoadResFromStreamingAssetsBundle failed ... path = {0} type = {1} argc = {2} error", resInfoItem.PathHashKey, typeof(T).Name, resInfoItem.Path.Count);
            return(default(T));
        }
示例#3
0
        public bool Create(object argv)
        {
            LoggerManager.Instance().LogProcessFormat("Create Scene Name = {0}", sceneItem.Name);

            userData = argv;

            for (int i = 0; i < sceneItem.AssetBundles.Count; ++i)
            {
                var bundleName = sceneItem.AssetBundles[i];
                if (!string.IsNullOrEmpty(bundleName))
                {
                    AddTask(AssetBundleManager.Instance().LoadAssetBundle(bundleName, null, () =>
                    {
                        LoggerManager.Instance().LogErrorFormat("LoadAssetBundleFailed Name = {0} SceneName = {1}", bundleName, sceneItem.Name);
                    }, false));
                }
            }

            OnCreate();

            return(true);
        }
示例#4
0
        public void Exit()
        {
            LoggerManager.Instance().LogProcessFormat("Exit Scene Name = {0}", sceneItem.Name);

            OnExit();

            ansyTasks.Clear();
            userData = null;
            iId      = -1;

            UIManager.Instance().CloseAllFrames();
            EventManager.Instance().Clear();
            InvokeManager.Instance().Clear();

            for (int i = 0; i < sceneItem.AssetBundles.Count; ++i)
            {
                if (!string.IsNullOrEmpty(sceneItem.AssetBundles[i]))
                {
                    AssetBundleManager.Instance().UnLoadAssetBundle(sceneItem.AssetBundles[i]);
                }
            }
            sceneItem = null;
        }
示例#5
0
        IEnumerator LoadGameBaseModule()
        {
            bool succeed = true;

            if (AssetLoaderManager.Instance().HasSmallUpdate)
            {
                yield return(AssetBundleManager.Instance().LoadAssetBundleFromPkg(mBundleName, null,
                                                                                  () =>
                {
                    succeed = false;
                }));

                if (!succeed)
                {
                    mError = GMError.GME_LoadBaseModuleFailed;
                    LoggerManager.Instance().LogErrorFormat("Load BaseBundle {0} From Pkg Failed ...", mBundleName);
                    yield break;
                }
            }
            else
            {
                yield return(AssetBundleManager.Instance().LoadAssetBundle(mBundleName, null,
                                                                           () =>
                {
                    succeed = false;
                }, true));


                if (!succeed)
                {
                    mError = GMError.GME_LoadBaseModuleFailed;
                    LoggerManager.Instance().LogErrorFormat("Load BaseBundle {0} From StreamingAssets Failed ...", mBundleName);
                    yield break;
                }
            }

            TableManager.Instance().LoadTableFromAssetBundle <ProtoTable.ModuleTable>(AssetBundleManager.Instance().getAssetBundle(mBundleName));
            var moduleTable = TableManager.Instance().GetTable <ProtoTable.ModuleTable>();

            if (null == moduleTable)
            {
                mError = GMError.GME_LoadBaseModuleFailed;
                LoggerManager.Instance().LogErrorFormat("load ModuleTable Failed ...");
                yield break;
            }
            LoggerManager.Instance().LogProcessFormat("Load ModuleTable Succeed !");

            yield return(AssetBundleManager.Instance().LoadAssetBundleFromModule(1, null, () =>
            {
                succeed = false;
            }));

            if (!succeed)
            {
                mError = GMError.GME_LoadBaseModuleFailed;
                LoggerManager.Instance().LogErrorFormat("load baseModule Failed ...");
                yield break;
            }

            TableManager.Instance().LoadTableFromAssetBundle <ProtoTable.ResourceInfoTable>(AssetBundleManager.Instance().getAssetBundle(mBundleName));
            var localResourcesInfoTable = TableManager.Instance().GetTable <ProtoTable.ResourceInfoTable>();

            if (null == localResourcesInfoTable)
            {
                mError = GMError.GME_LoadBaseModuleFailed;
                LoggerManager.Instance().LogErrorFormat("加载游戏资源表失败...");
                yield break;
            }

            TableManager.Instance().LoadTableFromAssetBundle <ProtoTable.FrameTypeTable>(AssetBundleManager.Instance().getAssetBundle(mBundleName));
            var frameTypeTable = TableManager.Instance().GetTable <ProtoTable.FrameTypeTable>();

            if (null == frameTypeTable)
            {
                mError = GMError.GME_LoadBaseModuleFailed;
                LoggerManager.Instance().LogErrorFormat("加载界面表失败...");
                yield break;
            }

            var resourceInfoTable = AssetLoaderManager.Instance().Initialize(new AssetLoaderData
            {
                frameHandle             = this,
                localResourcesInfoTable = localResourcesInfoTable,
            });
        }
示例#6
0
        IEnumerator DownLoadBaseModule()
        {
            bool succeed = true;

            var baseBundleUrl = string.Format("{0}{1}/{2}/", mBaseConfigUrl, CommonFunction.getPlatformString(),
                                              AssetLoaderManager.Instance().RemoteVersion);

            yield return(AssetBundleManager.Instance().DownLoadAssetBundles(baseBundleUrl, new List <string>()
            {
                mBundleName
            }, null, () =>
            {
                succeed = false;
            }));

            if (!succeed)
            {
                mError = GMError.GME_DownLoadBaseModuleFailed;
                LoggerManager.Instance().LogErrorFormat("从远程加载[{0}] Bundle 失败 !!!", mBundleName);
                yield break;
            }

            yield return(AssetBundleManager.Instance().LoadAssetBundle(mBundleName, null, () =>
            {
                succeed = false;
            }, false));

            if (!succeed)
            {
                mError = GMError.GME_DownLoadBaseModuleFailed;
                LoggerManager.Instance().LogErrorFormat("从本地加载 刚下载的[{0}] Bundle 失败 !!!", mBundleName);
                yield break;
            }

            var baseBundle = AssetBundleManager.Instance().getAssetBundle(mBundleName);

            if (null == baseBundle)
            {
                mError = GMError.GME_DownLoadBaseModuleFailed;
                LoggerManager.Instance().LogFormat("加载[{0}] Bundle 失败 !!!", mBundleName);
                yield break;
            }

            //加载模块表
            TableManager.Instance().LoadTableFromAssetBundle <ProtoTable.ModuleTable>(baseBundle);
            var moduleTable = TableManager.Instance().GetTable <ModuleTable>();

            if (null == moduleTable)
            {
                mError = GMError.GME_DownLoadBaseModuleFailed;
                LoggerManager.Instance().LogErrorFormat("加载模块表 ModuleTable 失败 !!!");
                yield break;
            }

            //加载
            int baseModuleId = 1;
            var moduleItem   = TableManager.Instance().GetTableItem <ModuleTable>(baseModuleId);

            if (null == moduleTable)
            {
                mError = GMError.GME_DownLoadBaseModuleFailed;
                LoggerManager.Instance().LogErrorFormat("加载模块表项 ModuleTable 失败 ID={0}!!!", baseModuleId);
                yield break;
            }

            List <string> needDownLoadBundles = new List <string>(32);

            AssetLoaderManager.Instance().GetNeedDownLoadModule(moduleItem.RequiredBundles.ToArray(), needDownLoadBundles);
            AssetLoaderManager.Instance().GetNeedDownLoadModule(new string[]
            {
                CommonFunction.getPlatformString()
            }, needDownLoadBundles);

            AssetBundleManager.Instance().UnLoadAssetBundle(mBundleName);

            if (needDownLoadBundles.Count > 0)
            {
                for (int i = 0; i < needDownLoadBundles.Count; ++i)
                {
                    LoggerManager.Instance().LogProcessFormat("Bundle [{0}] 需要下载 ...", needDownLoadBundles[i]);
                }

                var bundleUrl = string.Format("{0}{1}/{2}/", mBaseConfigUrl, CommonFunction.getPlatformString(),
                                              AssetLoaderManager.Instance().RemoteVersion);

                yield return(AssetBundleManager.Instance().DownLoadAssetBundles(bundleUrl, needDownLoadBundles, null, () =>
                {
                    succeed = false;
                    LoggerManager.Instance().LogErrorFormat("DownLoadAssetBundles Failed ...");
                }));

                if (!succeed)
                {
                    mError = GMError.GME_DownLoadBaseModuleFailed;
                    yield break;
                }
                LoggerManager.Instance().LogFormat("DownLoadBaseModule Succeed !");
            }
            else
            {
                LoggerManager.Instance().LogProcessFormat("No Bundle Need Download ...");
            }
        }