public void load(string uri) { if (this.uri == uri) { return; } this.uri = uri; if (string.IsNullOrEmpty(uri)) { return; } string url = getURL(uri); if (resource != null) { resource.release(); AssetsManager.bindEventHandle(resource, resourceHandle, false); } resource = AssetsManager.getResource(url, LoaderXDataType.ASSETBUNDLE); resource.retain(); AssetsManager.bindEventHandle(resource, resourceHandle); resource.load(); }
protected override void _loadImp(int priority = 0, bool progress = false, uint retryCount = 0) { this.isProgress = progress; string manifesURI = "/" + manifesKey + "/"; int len = manifesURI.Length; if (string.IsNullOrEmpty(manifesKey)) { throw new Exception("不正常"); } int index = url.IndexOf(manifesURI); manifesPrefix = url.Substring(0, index + len); dependKey = url.Substring(index + len); manifesURI = manifesKey + ".manifest"; string manifesURL = manifesPrefix + manifesKey; AssetResource resource = AssetsManager.getResource(manifesURL, manifesURI, LoaderXDataType.MANIFEST); if (progress) { resource.addEventListener(EventX.PROGRESS, progressHandle); } AssetsManager.bindEventHandle(resource, manifesHandle); resource.load(3); return; }
protected override void _loadImp(int priority = 0, bool progress = false, uint retryCount = 0) { this.isProgress = progress; string manifesURI = "/" + manifesKey + "/"; int len = manifesURI.Length; if (string.IsNullOrEmpty(manifesKey)) { throw new Exception("不正常:" + _url + "\tmanifesKey:" + manifesKey); } int index = _url.IndexOf(manifesURI); manifesPrefix = _url.Substring(0, index + len); dependKey = url.Substring(index + len).ToLower(); //prefab会被转换成小写的; this._url = manifesPrefix + dependKey; string manifesURL = manifesPrefix + manifesKey; //不做除引用操作; manifestResource = AssetsManager.getResource(manifesURL, LoaderXDataType.MANIFEST); manifestResource.initManifes(manifesPrefix, manifesKey); manifestResource.isForceRemote = isForceRemote; AssetsManager.bindEventHandle(manifestResource, manifesHandle); manifestResource.load(); }
private void manifesHandle(EventX e) { AssetResource resource = e.target as AssetResource; resource.removeEventListener(EventX.PROGRESS, progressHandle); AssetsManager.bindEventHandle(resource, manifesHandle, false); if (e.type != EventX.COMPLETE) { _data = null; resourceComplete(e.type); return; } QueueLoader queueLoader = new QueueLoader(); queueLoader.retryCount = 3; queueLoader.addEventListener(EventX.COMPLETE, dependsHandle); if (isProgress) { queueLoader.addEventListener(EventX.PROGRESS, progressHandle); } assetBundleManifest = resource.data as AssetBundleManifest; string[] dependencies = assetBundleManifest.GetAllDependencies(dependKey); //Hash128 hash = assetBundleManifest.GetAssetBundleHash(dependKey); string hashValue = null; string hashKey = null; AssetResource tempResource; foreach (string dependency in dependencies) { string url = manifesPrefix + dependency; string uri = manifesKey + "/" + dependency; //Debug.Log(dependency); hashValue = assetBundleManifest.GetAssetBundleHash(dependency).ToString(); hashKey = manifesKey + "_" + hashValue; if (resourceHash128Maping.TryGetValue(hashKey, out tempResource) == false) { tempResource = AssetsManager.getResource(url, uri, LoaderXDataType.ASSETBUNDLE); resourceHash128Maping.Add(hashKey, tempResource); } /*else if (url != tempResource.url) * { * Debug.Log("redirect:" + url + " to:" + tempResource.url); * }*/ tempResource.retain(); queueLoader.add(tempResource); } queueLoader.start(); }
/// <summary> /// /// </summary> /// <param name="url"></param> /// <param name="uri"></param> /// <param name="type"></param> /// <param name="resultHandle">同url只返回一次回调</param> /// <returns></returns> public AssetResource add(string url, string uri, LoaderXDataType type, Action <EventX> resultHandle = null) { AssetResource resource = null; if (urlMapping.TryGetValue(uri, out resource)) { return(resource); } resource = AssetsManager.getResource(url, uri, type); if (resource == null) { return(null); } innerAdd(uri, resource, resultHandle); return(resource); }
public void load(string url) { isLoaded = false; AssetResource resource = null; if (AssetsManager.routerResourceDelegate != null) { resource = AssetsManager.routerResourceDelegate(url, name, "sound"); } if (resource == null) { resource = AssetsManager.getResource(url, LoaderXDataType.PREFAB); } AssetsManager.bindEventHandle(resource, completeHandle); resource.load(); }
/// <summary> /// /// </summary> /// <param name="url"></param> /// <param name="uri"></param> /// <param name="type"></param> /// <param name="resultHandle">同url只返回一次回调</param> /// <returns></returns> public AssetResource add(string url, LoaderXDataType type, Action <EventX> resultHandle = null) { if (isStart) { DebugX.LogError("Qu不能在运行时加入:" + url); } AssetResource resource = null; if (string.IsNullOrEmpty(url)) { return(resource); } string key = url.ToLower(); if (urlMapping.TryGetValue(key, out resource)) { return(resource); } resource = AssetsManager.getResource(url, type); if (resource == null) { return(null); } if (isUseRef) { resource.retain(); } urlMapping.Add(key, resource); queue.Enqueue(resource); if (resultHandle != null && resultActions.ContainsKey(key) == false) { resultActions.Add(key, resultHandle); } return(resource); }
private void manifesHandle(EventX e) { currentProgress = 0.1f; simpleDispatch(EventX.PROGRESS, currentProgress); if (dependenciesResource.Count > 0) { foreach (AssetResource assetResource in dependenciesResource) { assetResource.removeEventListener(EventX.DEPEND_READY, dependsHandle); AssetsManager.bindEventHandle(assetResource, dependsHandle, false); assetResource.release(); } dependenciesResource.Clear(); } AssetResource resource = e.target as AssetResource; AssetsManager.bindEventHandle(resource, manifesHandle, false); if (e.type != EventX.COMPLETE) { _data = null; resourceComplete(EventX.FAILED); return; } assetBundleManifest = resource.data as AssetBundleManifest; string[] dependencies = assetBundleManifest.GetDirectDependencies(dependKey); AssetResource tempResource; int len = _needLoadedDependCount = dependencies.Length; //增加自身 _needLoadedDependCount += 1; if (len > 0) { //DebugX.Log(dependKey + ":::::::::::::::::::::::::::::::::::::" + len); for (int i = 0; i < len; i++) { string dependency = dependencies[i]; if (dependency == dependKey) { _needLoadedDependCount--; continue; } string url = manifesPrefix + dependency; //DebugX.Log(url); tempResource = AssetsManager.getResource(url, LoaderXDataType.ASSETBUNDLE); if (dependenciesResource.Contains(tempResource)) { DebugX.Log("hasDuplicate:" + url); _needLoadedDependCount--; continue; } tempResource.retain(); dependenciesResource.Add(tempResource); AssetBundle old; string key = url.ToLower(); RFLoader.assetBundleMapping.TryGetValue(key, out old); if (old != null || tempResource.isLoaded) { //DebugX.LogWarning("has:"+url); _needLoadedDependCount--; continue; } tempResource.addEventListener(EventX.DEPEND_READY, dependsHandle); AssetsManager.bindEventHandle(tempResource, dependsHandle); tempResource.load(); } } _totalDependCount = _needLoadedDependCount; base._loadImp(0, isProgress); }