private IEnumerator CoLoadSerializeMaterial() { var matLoadBridge = KAssetFileLoader.Load(Url); while (!matLoadBridge.IsCompleted) { Progress = matLoadBridge.Progress; yield return(null); } var sMat = matLoadBridge.ResultObject as KSerializeMaterial; Debuger.Assert(sMat); Desc = sMat.ShaderName; Debuger.Assert(Mat == null); yield return(KResourceModule.Instance.StartCoroutine(CoGenerateMaterial(Url, sMat))); Debuger.Assert(Mat); matLoadBridge.Release(); //不需要它了 if (Application.isEditor) { KResoourceLoadedAssetDebugger.Create("Material", Url, Mat); } OnFinish(Mat); }
protected override void Init(string url, params object[] args) { base.Init(url, args); Path = url; AssetFileBridge = KAssetFileLoader.Load(Path, OnAssetLoaded); }
protected override void Init(string url, params object[] args) { base.Init(url, args); _assetFileBridge = KAssetFileLoader.Load(url, (isOk, asset) => { if (IsReadyDisposed) // 中途释放 { OnFinish(null); return; } if (!isOk) { OnFinish(null); Logger.LogError("[InstanceAssetLoader]Error on assetfilebridge loaded... {0}", url); return; } try { InstanceAsset = (GameObject)GameObject.Instantiate(asset as UnityEngine.GameObject); } catch (Exception e) { Logger.LogException(e); } if (Application.isEditor) { KResoourceLoadedAssetDebugger.Create("AssetCopy", url, InstanceAsset); } OnFinish(InstanceAsset); }); }
//仅仅是预加载,回调仅告知是否加载成功 public static KAssetFileLoader Preload(string path, System.Action <bool> callback = null) { return(KAssetFileLoader.Load(path, (isOk, asset) => { if (callback != null) { callback(isOk); } })); }
public static KStaticAssetLoader Load(string url, KAssetFileLoader.CAssetFileBridgeDelegate callback = null, KAssetBundleLoaderMode loaderMode = KAssetBundleLoaderMode.Default) { CLoaderDelgate newCallback = null; if (callback != null) { newCallback = (isOk, obj) => callback(isOk, obj as UnityEngine.Object); } return AutoNew<KStaticAssetLoader>(url, newCallback, false, loaderMode); }
// TODO: 无视AssetName暂时! public static KInstanceAssetLoader Load(string url, KAssetFileLoader.CAssetFileBridgeDelegate callback = null) { var loader = AutoNew<KInstanceAssetLoader>(url, (ok, resultObject) => { if (callback != null) callback(ok, resultObject as UnityEngine.Object); }, true); return loader; }
//仅仅是预加载,回调仅告知是否加载成功 public static IEnumerator CoPreload(string path, System.Action <bool> callback = null) { var w = KAssetFileLoader.Load(path, null); while (!w.IsCompleted) { yield return(null); } if (callback != null) { callback(!w.IsError); // isOk? } }
protected override void Init(string path, params object[] args) { var loaderMode = (KAssetBundleLoaderMode) args[0]; base.Init(path, args); if (string.IsNullOrEmpty(path)) Logger.LogError("StaticAssetLoader 空资源路径!"); _assetFileLoader = KAssetFileLoader.Load(path, (_isOk, _obj) => { OnFinish(_obj); if (Application.isEditor) if (TheAsset != null) KResoourceLoadedAssetDebugger.Create("StaticAsset", path, TheAsset); }, loaderMode); }
public IEnumerator LoadUIAsset(CUILoadState openState, UILoadRequest request) { var name = openState.TemplateName; // 具体加载逻辑 // manifest string manifestPath = ResourceDepUtils.GetBuildPath(string.Format("BundleResources/NGUI/{0}.prefab.manifest{1}", name, AppEngine.GetConfig(KEngineDefaultConfigs.AssetBundleExt))); var manifestLoader = KBytesLoader.Load(manifestPath, KResourceInAppPathType.PersistentAssetsPath, KAssetBundleLoaderMode.PersitentDataPathSync); while (!manifestLoader.IsCompleted) { yield return(null); } var manifestBytes = manifestLoader.Bytes; manifestLoader.Release(); // 释放掉文本字节 var utf8NoBom = new UTF8Encoding(false); var manifestList = utf8NoBom.GetString(manifestBytes).Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries); for (var i = 0; i < manifestList.Length; i++) { var depPath = manifestList[i] + AppEngine.GetConfig(KEngineDefaultConfigs.AssetBundleExt); var depLoader = KAssetFileLoader.Load(depPath); while (!depLoader.IsCompleted) { yield return(null); } } string path = ResourceDepUtils.GetBuildPath(string.Format("BundleResources/NGUI/{0}.prefab{1}", name, KEngine.AppEngine.GetConfig("AssetBundleExt"))); var assetLoader = KStaticAssetLoader.Load(path); openState.UIResourceLoader = assetLoader; // 基本不用手工释放的 while (!assetLoader.IsCompleted) { yield return(null); } request.Asset = assetLoader.TheAsset; }
protected override void Init(string path, params object[] args) { var loaderMode = (KAssetBundleLoaderMode)args[0]; base.Init(path, args); if (string.IsNullOrEmpty(path)) { Logger.LogError("StaticAssetLoader 空资源路径!"); } _assetFileLoader = KAssetFileLoader.Load(path, (_isOk, _obj) => { OnFinish(_obj); if (Application.isEditor) { if (TheAsset != null) { KResoourceLoadedAssetDebugger.Create("StaticAsset", path, TheAsset); } } }, loaderMode); }
private static IEnumerator CoLoadAssetBundleAsync(string relativePath, ResourceDepRequest request) { // manifest string manifestPath = ResourceDepUtils.GetBuildPath(String.Format("{0}.manifest{1}", relativePath, AppEngine.GetConfig(KEngineDefaultConfigs.AssetBundleExt))); var manifestLoader = KBytesLoader.Load(manifestPath, LoaderMode.Sync); while (!manifestLoader.IsCompleted) { yield return(null); } // manifest读取失败,可能根本没有manifest,是允许的 if (manifestLoader.IsSuccess) { var manifestBytes = manifestLoader.Bytes; manifestLoader.Release(); // 释放掉文本字节 string[] manifestList = GetManifestList(manifestBytes); for (var i = 0; i < manifestList.Length; i++) { var depPath = manifestList[i] + AppEngine.GetConfig(KEngineDefaultConfigs.AssetBundleExt); var depLoader = KAssetFileLoader.Load(depPath); if (request.Loaders == null) { request.Loaders = new List <KAbstractResourceLoader>(); } request.Loaders.Add(depLoader); while (!depLoader.IsCompleted) { yield return(null); } } } string path = GetBuildPath(String.Format("{0}{1}", relativePath, AppEngine.GetConfig(KEngineDefaultConfigs.AssetBundleExt))); // 获取后缀名 var ext = Path.GetExtension(relativePath); if (ext == ".unity" || ext == ".shader") { // Scene var sceneLoader = KAssetBundleLoader.Load(path); if (request.Loaders == null) { request.Loaders = new List <KAbstractResourceLoader>(); } request.Loaders.Add(sceneLoader); while (!sceneLoader.IsCompleted) { yield return(null); } } else { var assetLoader = KAssetFileLoader.Load(path); while (!assetLoader.IsCompleted) { yield return(null); } request.Asset = assetLoader.Asset; } request.IsDone = true; }
/// <summary> /// 同步加载AssetBundle /// </summary> /// <param name="relativePath"></param> /// <returns></returns> public static Object LoadAssetBundleSync(string relativePath) { //CheckLoadShadersPrefab(); // manifest string manifestPath = ResourceDepUtils.GetBuildPath(String.Format("{0}.manifest{1}", relativePath, AppEngine.GetConfig(KEngineDefaultConfigs.AssetBundleExt))); var manifestLoader = KBytesLoader.Load(manifestPath, LoaderMode.Sync); //while (!manifestLoader.IsCompleted) // yield return null; var manifestBytes = manifestLoader.Bytes; manifestLoader.Release(); // 释放掉文本字节 if (manifestBytes != null) { var manifestList = GetManifestList(manifestBytes); for (var i = 0; i < manifestList.Length; i++) { var depPath = manifestList[i] + AppEngine.GetConfig(KEngineDefaultConfigs.AssetBundleExt); //var depLoader = KAssetFileLoader.Load(depPath); //while (!depLoader.IsCompleted) //{ // yield return null; //} /*if (Application.isEditor) * { * Log.Info("Load dep sync:{0}, from: {1}", depPath, relativePath); * }*/ } } else { Log.Warning("Cannot find Manifest: {0}", relativePath); } string path = GetBuildPath(String.Format("{0}{1}", relativePath, AppEngine.GetConfig(KEngineDefaultConfigs.AssetBundleExt))); //while (!assetLoader.IsCompleted) // yield return null; // 获取后缀名 var ext = Path.GetExtension(relativePath); if (ext == ".unity" || ext == ".shader") { // Scene //var sceneLoader = KAssetBundleLoader.Load(path); //while (!sceneLoader.IsCompleted) // yield return null; return(null); } else { var assetLoader = KAssetFileLoader.Load(path); //while (!assetLoader.IsCompleted) // yield return null; return(assetLoader.Asset); } }
protected override void Init(string url, params object[] args) { base.Init(url, args); AssetFileBridge = KAssetFileLoader.Load(url, (bool isOk, UnityEngine.Object obj) => { OnFinish(obj); }); }
protected override void Init(string url, params object[] args) { base.Init(url, args); _bridge = KAssetFileLoader.Load(Url, (_isOk, _obj) => { OnFinish(_obj); }); }
protected override void Init(string url, params object[] args) { base.Init(url, args); _assetFileBridge = KAssetFileLoader.Load(url, (isOk, asset) => { if (IsReadyDisposed) // 中途释放 { OnFinish(null); return; } if (!isOk) { OnFinish(null); Logger.LogError("[InstanceAssetLoader]Error on assetfilebridge loaded... {0}", url); return; } try { InstanceAsset = (GameObject) GameObject.Instantiate(asset as UnityEngine.GameObject); } catch (Exception e) { Logger.LogException(e); } if (Application.isEditor) { KResoourceLoadedAssetDebugger.Create("AssetCopy", url, InstanceAsset); } OnFinish(InstanceAsset); }); }