Ejemplo n.º 1
0
        protected override void OnAwake()
        {
            base.OnAwake();

            // 加载Perfab
            AssetBundleMgr.GetInstance().AsyncLoad(@"ui/roles/select_character", AsyncLoadCallBack, null);
        }
Ejemplo n.º 2
0
        public void Update()
        {
            foreach (var key in _removeObjs)
            {
                UiBase uibase = _uiInses[key];
                uibase.Destroy();
                _uiInses.Remove(key);
            }
            _removeObjs.Clear();

            foreach (var one in _addObjs.Values)
            {
                _uiInses.Add(one.GetUiComplexType(), one);

                // 开始资源加载
                GameLogger.GetInstance().Trace("-- ui open:" + one.GetType());
                var uiAb = UiFactory.GetInstance().GetAssetBundle(one.GetUiType());
                if (uiAb != null)
                {
                    AssetBundleMgr.GetInstance().AsyncLoad(uiAb, AsyncLoadCallBack, one.GetUiComplexType());
                }
                else
                {
                    // 空界面,做逻辑切换用的,不需要gameobject表现
                    one.AttachGameObject(null);
                }
            }

            _addObjs.Clear();
            foreach (var one in _uiInses)
            {
                one.Value.Update();
            }
        }
Ejemplo n.º 3
0
 public void Init()
 {
     // 加载 _canvas
     foreach (var one in _baesUrl)
     {
         AssetBundleMgr.GetInstance().AsyncLoad(one, AsyncLoadCallBackCanvasBg, one);
     }
 }
Ejemplo n.º 4
0
        void Start()
        {
            Global.GetInstance().SetResPath(ResPath);
            Global.GetInstance().SetReferencePath(ReferencePath);
            Global.GetInstance().SetServer(ServerIp, ServerPort);

            AssetBundleMgr.GetInstance().Init();
            _state = ReadyToLoadStateType.Init1;
        }
Ejemplo n.º 5
0
        private void AsyncLoadCallBackCanvasBg(object context, AssetBundle ab)
        {
            if (context == null)
            {
                return;
            }

            string url = context as string;

            AssetBundleMgr.GetInstance().SetDontRelease(url);
        }
Ejemplo n.º 6
0
        public void Update()
        {
            switch (_state)
            {
            case ReadyToLoadStateType.Init1:
            {
                if (!AssetBundleMgr.GetInstance().IsInited())
                {
                    break;
                }

                UiMgr.GetInstance().Init();
                _state = ReadyToLoadStateType.Init2;
                break;
            }

            case ReadyToLoadStateType.Init2:
            {
                if (!UiMgr.GetInstance().IsInited())
                {
                    break;
                }

                _state = ReadyToLoadStateType.LoadScene;
                break;
            }

            case ReadyToLoadStateType.LoadScene:
            {
                // 初始化加载,下面二行可以优化成加载类
                GameMain.GetInstance().Init();

                // 设置 加载场景需要加载的数据
                AsyncLoaderCache cache = AsyncLoaderCache.GetInstance();
                cache.Loaders.Clear();

                AsyncLoaderScene ssloader = new AsyncLoaderScene(AsyncLoader.SceneLoginAbPath, AsyncLoader.SceneLoginName, AsyncLoader.SceneLoginMapId);
                cache.Loaders.Add(ssloader);

                //AsyncLoaderTest testLoader = new AsyncLoaderTest( );
                //cache.Loaders.Add( testLoader );

                // 准备开始游戏了,加载“加载场景”
                SceneManager.LoadScene(AsyncLoader.SceneLoader);

                _state = ReadyToLoadStateType.Ok;
                break;
            }

            case ReadyToLoadStateType.Ok:
                break;
            }
        }
Ejemplo n.º 7
0
        public bool IsInited()
        {
            foreach (var one in _baesUrl)
            {
                if (AssetBundleMgr.GetInstance().GetAb(one) == null)
                {
                    return(false);
                }
            }

            return(true);
        }
Ejemplo n.º 8
0
        // 完全加载完成
        public bool CompletedCallback( )
        {
            if (!_isCompleted)
            {
                return(false);
            }

            foreach (var one in Callbacks)
            {
                one.LoadCompleted(AssetBundleMgr.GetInstance( ).GetAb(_mainUrl));
            }

            return(true);
        }
Ejemplo n.º 9
0
        public string GetUnLoadUrl( )
        {
            // 取一个还没有加载的URL
            foreach (var one in _urlRequestList)
            {
                var ab = AssetBundleMgr.GetInstance( ).GetAb(one);
                if (ab != null)
                {
                    continue;
                }

                return(one);
            }

            return("");
        }
Ejemplo n.º 10
0
        // url 加载成功之后的回调
        public void UrlLoadedCallBack(string url, AssetBundle ab)
        {
            // 没有找到,一定有错
            if (!_urlRequestList.Contains(url))
            {
                throw new System.Exception(string.Format("UrlLoadCallBack is not found url in UrlRequestList"));
            }

            foreach (var one in _urlRequestList)
            {
                var abCache = AssetBundleMgr.GetInstance( ).GetAb(one);
                if (abCache == null)
                {
                    // 为 mainUrl 创建一个依赖资源的请求
                    AssetBundleMgr.GetInstance( ).CreateDependsReques(one, _mainUrl);
                    return;
                }
            }

            _isCompleted = true;
        }
Ejemplo n.º 11
0
        private void AsyncLoadCallBack(object context, AssetBundle ab)
        {
            UiComplexType key = (UiComplexType)context;

            UiBase uiObj = null;

            if (_uiInses.ContainsKey(key))
            {
                uiObj = _uiInses[key];
            }

            if (uiObj == null && _addObjs.ContainsKey(key))
            {
                uiObj = _addObjs[key];
            }

            // 回调的时候,界面已经没有了
            if (uiObj == null)
            {
                return;
            }

            Canvas canvas = FindObjectOfType <Canvas>();

            if (canvas == null)
            {
                string canvasUrl = _urlCanvas;
                //if (key.UiType == UiType.LoadingBar || key.UiType == UiType.Login)
                //{
                //    // 登录和加载界面的背影略有不同
                //    canvasUrl = _urlCanvasBg;
                //}

                AssetBundle abBg = AssetBundleMgr.GetInstance().GetAb(canvasUrl);
                if (abBg == null)
                {
                    GameLogger.GetInstance().Debug($"!!!!!GetAb failed. {canvasUrl}");
                    return;
                }

                GameObject canvasObj = MonoBehaviour.Instantiate(abBg.LoadAsset(abBg.GetAllAssetNames()[0])) as GameObject;
                if (canvasObj == null)
                {
                    return;
                }

                canvasObj.transform.Rotate(0, 0, 0);
                canvas = canvasObj.GetComponent <Canvas>();
            }

            // 对像挂在 canvas 之下
            GameObject obj =
                MonoBehaviour.Instantiate(ab.LoadAsset(ab.GetAllAssetNames()[0]), canvas.transform) as GameObject;

            if (obj == null)
            {
                return;
            }

            obj.transform.Rotate(0, 0, 0);
            //obj.transform.localScale = new Vector3( 1, 1, 1 );
            uiObj.AttachGameObject(obj);
        }
Ejemplo n.º 12
0
        public void Load3DObj()
        {
            string path = _gender == Proto.Gender.Female ? @"models/player/02" : @"models/player/01";

            AssetBundleMgr.GetInstance().AsyncLoad(path, AsyncLoadModelCallBack, null);
        }
Ejemplo n.º 13
0
 protected override void OnAwake()
 {
     // 加载模型
     AssetBundleMgr.GetInstance().AsyncLoad(@"models/player/01", AsyncLoadModelCallBack, new { isFemale = false });
     AssetBundleMgr.GetInstance().AsyncLoad(@"models/player/02", AsyncLoadModelCallBack, new { isFemale = true });
 }
 public override void Update( )
 {
     Progress = AssetBundleMgr.GetInstance( ).AsyncLoadProgress(AbPath);
 }
 public override void Start( )
 {
     GameLogger.GetInstance( ).Trace($"Try download: {SceneName}, path: {AbPath}");
     AssetBundleMgr.GetInstance( ).AsyncLoad(AbPath, AsyncLoadCallBack, null);
 }