//异步加载 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); } }
//获取资源路径 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); }
//同步加载 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)); }
//获取资源包完整路径 public static string GetBundleFullPath(EnumFileLocation location, EnumBundleType bundleType, string bundleName) { return($"{GetResPath(location, bundleType)}/{bundleName}"); }