//异步加载 public void LoadAssetAsync <T>(string assetName, Action <string, T> callback = null) where T : Object { XDebug.Log(XABConst.Tag, $"--加载AssetObject(异步) {assetName}"); assetName = assetName.ToLower(); var bundleName = AssetInfoManager.GetBundleNameByAssetName(assetName); if (string.IsNullOrEmpty(bundleName)) { callback?.Invoke(assetName, null); return; } var obj = _GetOrCreateAO(assetName); obj.Retain(); if (obj.State == EnumJobState.Done) { callback?.Invoke(assetName, obj.GetValue <T>()); return; } if (obj.State == EnumJobState.Process) { obj.AddCallback((p1, p2) => { callback?.Invoke(p1, p2 as T); }); return; } obj.LoadAsync <T>(this, assetName, (p1, p2) => { callback?.Invoke(p1, p2 as T); }); }
//同步加载 public T LoadAsset <T>(string assetName) where T : Object { XDebug.Log(XABConst.Tag, $"--加载AssetObject(同步) {assetName}"); assetName = assetName.ToLower(); var bundleName = AssetInfoManager.GetBundleNameByAssetName(assetName); if (string.IsNullOrEmpty(bundleName)) { return(null); } var obj = _GetOrCreateAO(assetName); obj.Retain(); if (obj.State == EnumJobState.Done) { return(obj.GetValue <T>()); } if (obj.State == EnumJobState.Process) { //正在执行异步加载,那么停止异步加载,直接同步加载 obj.StopAsync(); } obj.Load <T>(this, assetName); return(obj.GetValue <T>()); }
//异步加载 public void LoadBundleAsync(string bundleName, Action <string, AssetBundle> callback = null) { XDebug.Log(XABConst.Tag, $"--加载AssetBundle(异步) {bundleName}"); bundleName = bundleName.ToLower(); var bundleInfo = AssetInfoManager.GetBundleInfo(bundleName); if (bundleInfo == null) { callback?.Invoke(bundleName, null); return; } var obj = _GetOrCreateAB(bundleName); obj.Retain(); if (obj.State == EnumJobState.Done) { callback?.Invoke(bundleName, obj.GetValue()); return; } if (obj.State == EnumJobState.Process) { obj.AddCallback(callback); return; } obj.LoadAsync(this, EnumFileLocation.Client, bundleInfo.bundleType, bundleName, callback); }
//同步加载 public AssetBundle LoadBundle(string bundleName) { XDebug.Log(XABConst.Tag, $"--加载AssetBundle(同步) {bundleName}"); bundleName = bundleName.ToLower(); var bundleInfo = AssetInfoManager.GetBundleInfo(bundleName); if (bundleInfo == null) { return(null); } var obj = _GetOrCreateAB(bundleName); obj.Retain(); if (obj.State == EnumJobState.Done) { return(obj.GetValue()); } if (obj.State == EnumJobState.Process) { //正在执行异步加载,那么停止异步加载,直接同步加载 obj.StopAsync(); } //这里会通过其他数据获取location类型 obj.Load(this, EnumFileLocation.Client, bundleInfo.bundleType, bundleName); return(obj.GetValue()); }
public List <string> GetDependencies(string bundleName) { var bundleInfo = AssetInfoManager.GetBundleInfo(bundleName); if (bundleInfo == null) { return(null); } return(bundleInfo.dependencies); }
public string GetBundleNameByAssetName(string assetName) { return(AssetInfoManager.GetBundleNameByAssetName(assetName)); }