/// <summary> /// 资源已经卸载了 移除加载记录 /// </summary> public static void RemoveLocalResourcesAssetRecord(LoadResourcesAssetRecord assetRecord) { if (assetRecord == null) { return; } mAllLoadResourcesAssetRecords.Remove(assetRecord.mAssetFullUri); assetRecord.ReleaseLoadAssetRecord(); }
/// <summary> /// Resources 异步加载资源 (注意加载路径中不能带有扩展名否则加载失败) /// </summary> /// <param name="assetFullUri"></param> /// <param name="loadCallback"></param> /// <param name="procressCallback"></param> public static void ResourcesLoadAssetAsync(string assetFullUri, System.Action <ILoadAssetRecord> loadCallback, System.Action <string, float> procressCallback) { LoadResourcesAssetRecord resourcesAssetRecord = LoadResourcesAssetFromCache(assetFullUri); if (resourcesAssetRecord != null && resourcesAssetRecord.IsRecordEnable) { loadCallback?.Invoke(resourcesAssetRecord); return; } ResourceRequest request = Resources.LoadAsync(assetFullUri.GetPathWithOutExtension()); AsyncManager.StartAsyncOperation(request, () => { resourcesAssetRecord = LoadResourcesAssetRecord.GetLoadResourcesAssetRecord(assetFullUri, request.asset); RecordResourcesLoadAsset(assetFullUri, resourcesAssetRecord); loadCallback?.Invoke(resourcesAssetRecord); }, (procress) => { procressCallback?.Invoke(assetFullUri, procress); }); }
/// <summary>/// / 记录加载的资源/// </summary> private static void RecordResourcesLoadAsset(string assetUrl, LoadResourcesAssetRecord asset) { if (asset == null) { return; } if (mAllLoadResourcesAssetRecords.TryGetValue(assetUrl, out var infor)) { if (infor == asset) { return; } Debug.LogError($"RecordResourcesLoadAsset Fail,Already Exit Asset at path={assetUrl} Not Equal"); infor.ReleaseLoadAssetRecord(); mAllLoadResourcesAssetRecords.Remove(assetUrl); } mAllLoadResourcesAssetRecords[assetUrl] = asset; }
/// <summary> /// Resources 同步加载资源 (注意加载路径中不能带有扩展名否则加载失败) /// </summary> /// <param name="assetFullUri"></param> /// <returns></returns> public static ILoadAssetRecord ResourcesLoadAssetSync(string assetFullUri) { LoadResourcesAssetRecord resourcesAssetRecord = LoadResourcesAssetFromCache(assetFullUri); if (resourcesAssetRecord != null && resourcesAssetRecord.IsRecordEnable) { return(resourcesAssetRecord); } Object asset = Resources.Load <UnityEngine.Object>(assetFullUri.GetPathWithOutExtension()); if (asset == null) { #if UNITY_EDITOR Debug.LogInfor($"ResourcesLoadAssetSync Fail,assetFullUri={assetFullUri} not exit"); #endif return(null); } resourcesAssetRecord = LoadResourcesAssetRecord.GetLoadResourcesAssetRecord(assetFullUri, asset); RecordResourcesLoadAsset(assetFullUri, resourcesAssetRecord); return(resourcesAssetRecord); }