Exemplo n.º 1
0
 public UUIWorker(EWorkerState _state, EWorkerState _nextState, UUIInfo _info, bool _isSceneObject)
 {
     State         = _state;
     NextState     = _nextState;
     Info          = _info;
     IsSceneObject = _isSceneObject;
 }
Exemplo n.º 2
0
        /// <summary>
        /// 以静态单例模式加载UI
        /// </summary>
        /// <param name="_info"></param>
        /// <param name="_callback"></param>
        /// <returns></returns>
        UUIWorker LoadFromStaticSingle(UUIInfoStaticSingle _info, EWorkerState _nextState, Action <UUIWorker, GameObject> _callback)
        {
            if (null == _info.Instance)
            {
                return(null);
            }

            UUIContainer container;
            UUIWorker    worker;

            if (Manager.TryGetSingleWorker(_info, out container, out worker))
            {
                container.RemoveFromContainer(worker);
                Container.Add(worker);
                if (worker.State == EWorkerState.Working)
                {
                    WorkLine.Add(worker);
                }
            }
            else
            {
                worker         = new UUIWorker(EWorkerState.Resting, _nextState, _info, _info.IsSceneObject);
                worker.Request = new UUIRequestByDone(_info.Instance);
                AddedToContainer(worker, _nextState);
                _callback(worker, _info.Instance);
            }
            return(worker);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 从AssetBundle中加载UI
        /// </summary>
        /// <param name="_info">UI的信息</param>
        /// <param name="_callback">完成后的回调函数</param>
        /// <returns></returns>
        UUIWorker LoadFromAssetBundle(UUIInfoAssetBundle _info, EWorkerState _nextState, Action <UUIWorker, GameObject> _callback)
        {
            UAssetBundleLoaderProxyManager proxyManager = Manager.AssetBundleManager[_info.GetLoaderName()];;

            if (proxyManager == null)
            {
                Output.Error("从AssetBundle加载{0}.{1}UI失败,加载器{2}不存在.", _info.PackageName, _info.AssetName, _info.GetLoaderName());
                return(null);
            }

            UAssetBundleLoaderProxy proxy;

            if (string.IsNullOrEmpty(_info.ProxyName))
            {
                proxy = proxyManager.GetDefaultProxy();
            }
            else
            {
                proxy = proxyManager.GetProxy(_info.ProxyName);
            }

            if (proxy == null)
            {
                Output.Error("从AssetBundle加载{0}.{1}UI失败,没有有效的加载器代理组件{2}.", _info.PackageName, _info.AssetName, _info.ProxyName);
                return(null);
            }

            var request = proxy.GetLoader(_info.PackageName).LoadAssetAsync <GameObject>(_info.AssetName);

            UUIWorker worker = new UUIWorker(EWorkerState.Loading, _nextState, _info, _info.IsSceneObject);

            AddedToContainer(worker, _nextState);
            worker.Request = new UUIRequestBy(request, worker, _callback);
            return(worker);
        }
Exemplo n.º 4
0
 void AddedToContainer(UUIWorker _worker, EWorkerState _nextState)
 {
     Container.Add(_worker);
     if (_nextState == EWorkerState.Working)
     {
         WorkLine.Add(_worker);
     }
 }
Exemplo n.º 5
0
        /// <summary>
        /// 从Resource文件夹下加载UI
        /// </summary>
        /// <param name="_info">UI的信息</param>
        /// <param name="_callback">完成后的回调函数</param>
        /// <returns></returns>
        UUIWorker LoadFromResource(UUIInfoResource _info, EWorkerState _nextState, Action <UUIWorker, GameObject> _callback)
        {
            UUIWorker worker = new UUIWorker(EWorkerState.Loading, _nextState, _info, _info.IsSceneObject);

            AddedToContainer(worker, _nextState);
            var request = Manager.AssetManager.Loader.LoadAssetAsync <GameObject>(_info.DIR);

            worker.Request = new UUIRequestBy(request, worker, _callback);
            return(worker);
        }
Exemplo n.º 6
0
        /// <summary>
        /// 从静态模板中加载UI
        /// </summary>
        /// <param name="_info">UI的信息</param>
        /// <param name="_callback">完成时回调函数</param>
        /// <returns></returns>
        UUIWorker LoadFromStaticTemplate(UUIInfoStaticTemplate _info, EWorkerState _nextState, Action <UUIWorker, GameObject> _callback)
        {
            if (_info.Instance == null)
            {
                return(null);
            }
            UUIWorker worker = new UUIWorker(EWorkerState.Resting, _nextState, _info, _info.IsSceneObject);
            var       go     = GameObject.Instantiate(_info.Instance);

            worker.Request = new UUIRequestByDone(go);
            AddedToContainer(worker, _nextState);
            _callback(worker, go);
            return(worker);
        }
Exemplo n.º 7
0
 UUIWorker LoadUI(UUIInfo _info, EWorkerState _nextState, Action <UUIWorker, GameObject> _callback)
 {
     if (_info is UUIInfoResource)
     {
         return(LoadFromResource(_info as UUIInfoResource, _nextState, _callback));
     }
     else if (_info is UUIInfoAssetBundle)
     {
         return(LoadFromAssetBundle(_info as UUIInfoAssetBundle, _nextState, _callback));
     }
     else if (_info is UUIInfoStaticSingle)
     {
         return(LoadFromStaticSingle(_info as UUIInfoStaticSingle, _nextState, _callback));
     }
     else if (_info is UUIInfoStaticTemplate)
     {
         return(LoadFromStaticTemplate(_info as UUIInfoStaticTemplate, _nextState, _callback));
     }
     else
     {
         //> 交给别人处理
         return(null);
     }
 }
Exemplo n.º 8
0
 void SyncState(EWorkerState _newState)
 {
     State     = _newState;
     NextState = _newState;
 }