/// <summary> /// 加载资源对象 /// </summary> /// <param name="assetName">资源名称</param> /// <param name="assetType">资源类型</param> /// <param name="param">附加参数</param> /// <returns></returns> public AssetOperationHandle LoadAssetAsync(string assetName, System.Type assetType, IAssetParam param) { IAssetProvider provider = TryGetProvider(assetName); if (provider == null) { if (assetType == typeof(SceneInstance)) { IsSceneLoader = true; SceneInstanceParam sceneParam = param as SceneInstanceParam; provider = new AssetSceneProvider(this, assetName, assetType, sceneParam); } else if (assetType == typeof(PackageInstance)) { throw new NotImplementedException(nameof(PackageInstance)); } else { if (this is AssetBundleLoader) { provider = new AssetBundleProvider(this, assetName, assetType); } else if (this is AssetDatabaseLoader) { provider = new AssetDatabaseProvider(this, assetName, assetType); } else { throw new NotImplementedException($"{this.GetType()}"); } } _providers.Add(provider); } return(provider.Handle); }
/// <summary> /// 异步加载资源对象 /// </summary> /// <param name="assetName">资源名称</param> /// <param name="assetType">资源类型</param> /// <param name="syncLoadMode">同步加载模式</param> public AssetOperationHandle LoadAssetAsync(string assetName, System.Type assetType, bool syncLoadMode) { IAssetProvider provider = TryGetProvider(assetName); if (provider == null) { if (this is AssetBundleLoader) { provider = new AssetBundleProvider(this, assetName, assetType); } else if (this is AssetDatabaseLoader) { provider = new AssetDatabaseProvider(this, assetName, assetType); } else { throw new NotImplementedException($"{this.GetType()}"); } _providers.Add(provider); } // 异步转同步 if (syncLoadMode) { provider.SetSyncLoadMode(); } // 引用计数增加 provider.Reference(); return(provider.Handle); }