/// <summary> /// 同步加载AssetBundle 方法(优先从缓存中读取) /// </summary> /// <param name="assetFullUri">资源相对于Resouces 完整的路径</param> public static ILoadAssetRecord AssetBundleLoadAssetSync(string assetFullUri, string assetBundleNameUri, string assetBundleDirectoryUri, string assetRelativeUri) { LoadAssetBundleAssetRecord assetRecord = LoadAssetBundleSubAssetFromCache(assetFullUri); if (assetRecord != null && assetRecord.IsRecordEnable) { return(assetRecord); } if (string.IsNullOrEmpty(assetRelativeUri)) { // Debug.LogError($"AssetBundleLoadAssetSync Fail,assetRelativeUri Is Null {assetFullUri} "); return(null); } var assetBundleRecordInfor = LoadAssetBundleRecordSync(assetBundleNameUri, assetBundleDirectoryUri); if (assetBundleRecordInfor != null) { Object asset = assetBundleRecordInfor.LoadAsset <Object>(assetRelativeUri); if (asset != null) { assetRecord = LoadAssetBundleAssetRecord.GetLoadAssetBundleAssetRecord(assetFullUri, assetBundleRecordInfor, assetRelativeUri, asset); s_AllLoadedAssetBundleSubAssetRecord[assetFullUri] = assetRecord; return(assetRecord); } } return(null); }
/// <summary> /// 异步加载AssetBundle 方法(优先从缓存中读取) /// </summary> public static void AssetBundleLoadAssetAsync(string assetFullUri, string assetBundleNameUri, string assetBundleDirectoryUri, string assetRelativeUri, Action <ILoadAssetRecord> loadCallback) { LoadAssetBundleAssetRecord assetRecord = LoadAssetBundleSubAssetFromCache(assetFullUri); if (assetRecord != null && assetRecord.IsRecordEnable) { loadCallback?.Invoke(assetRecord); return; } if (string.IsNullOrEmpty(assetRelativeUri)) { Debug.LogError($"AssetBundleLoadAssetAsync Fail, 加载的资源 {assetFullUri} 为null"); loadCallback?.Invoke(null); return; } LoadAssetBundleRecordAsync(assetBundleNameUri, assetBundleDirectoryUri, (assetBundleInfor) => { if (assetBundleInfor != null) { Object asset = assetBundleInfor.LoadAsset <Object>(assetRelativeUri); if (asset != null) { assetRecord = LoadAssetBundleAssetRecord.GetLoadAssetBundleAssetRecord(assetFullUri, assetBundleInfor, assetRelativeUri, asset); s_AllLoadedAssetBundleSubAssetRecord[assetFullUri] = assetRecord; loadCallback?.Invoke(assetRecord); return; } } Debug.LogError($"AssetBundleLoadAssetAsync Fail,assetFullUri={assetFullUri} "); loadCallback?.Invoke(null); }); }