Пример #1
0
        //异步加载
        public void LoadAsync(IXAssetManager manager, EnumFileLocation location, EnumBundleType bundleType, string name, Action <string, AssetBundle> callback = null)
        {
            m_AssetManager = manager;
            m_BundleName   = name;
            m_dependencies.Clear();

            var dependencies = manager.GetDependencies(m_BundleName);

            if (dependencies != null)
            {
                m_dependencies.AddRange(dependencies);
                m_dependencyCurCount = 0;
                m_dependencyMaxCount = dependencies.Count;
                foreach (var dependent in dependencies)
                {
                    manager.LoadBundleAsync(dependent, _OnLoadedDependent);
                }
            }
            var fullPath = XABUtilities.GetBundleFullPath(location, bundleType, name);

            XDebug.Log(XABConst.Tag, $"加载 {fullPath}");
            _StartLoadAsync(fullPath);
            m_state     = EnumJobState.Process;
            m_callback += callback;
        }
 public void SetLocation(string bundleName, EnumFileLocation location)
 {
     if (m_dictBundleLocations.ContainsKey(bundleName))
     {
         m_dictBundleLocations[bundleName] = location;
     }
     else
     {
         m_dictBundleLocations.Add(bundleName, location);
     }
 }
Пример #3
0
        //获取资源路径
        public static string GetResPath(EnumFileLocation location, EnumBundleType bundleType)
        {
#if UNITY_EDITOR
            var mode = (EnumResMode)EditorPrefs.GetInt(XABConst.EKResMode, XABConst.EKResModeValue);
            //模拟模式
            if (mode == EnumResMode.Simulate)
            {
                return(string.Empty);
            }
            //本地模式
            if (mode == EnumResMode.Local)
            {
                return($"{GetResPathEditSet()}/{bundleType.ToString()}");
            }
            //远程模式
            if (mode == EnumResMode.Remote)
            {
                var path = string.Empty;
                switch (bundleType)
                {
                case EnumBundleType.Static:
                    path = GetResPathEditSet();
                    break;

                case EnumBundleType.Hotfix:
                    path = XABConst.DocumentPath;
                    break;
                }
                return($"{path}/{bundleType.ToString()}");;
            }
#endif
            //发布模式
            if (location == EnumFileLocation.Client)
            {
                return($"{XABConst.DocumentPath}/{bundleType.ToString()}");
            }
            if (location == EnumFileLocation.Stream)
            {
#if UNITY_EDITOR
                return($"{GetResPathEditSet()}/{bundleType.ToString()}");
#endif
                return($"{XABConst.StreamingAssetsPath}/{bundleType.ToString()}");
            }
            return(string.Empty);
        }
Пример #4
0
        //同步加载
        public void Load(IXAssetManager manager, EnumFileLocation location, EnumBundleType bundleType, string name)
        {
            m_AssetManager = manager;
            m_BundleName   = name;

            m_dependencies.Clear();
            var dependencies = manager.GetDependencies(m_BundleName);

            if (dependencies != null)
            {
                m_dependencies.AddRange(dependencies);
                foreach (var dependency in dependencies)
                {
                    manager.LoadBundle(dependency);
                }
            }
            var fullPath = XABUtilities.GetBundleFullPath(location, bundleType, name);

            XDebug.Log(XABConst.Tag, $"加载 {fullPath}");
            SetValue(_LoadInternal(fullPath));
        }
Пример #5
0
 //获取资源包完整路径
 public static string GetBundleFullPath(EnumFileLocation location, EnumBundleType bundleType, string bundleName)
 {
     return($"{GetResPath(location, bundleType)}/{bundleName}");
 }