IEnumerator DownloadAssetBundle() { yield return StartCoroutine(AssetBundleManager.downloadAssetBundle(url, version)); bundle = AssetBundleManager.getAssetBundle(url, version); if (bundle != null) AssetLoader.Instance.SetInfoText("Download Success.... "); else AssetLoader.Instance.SetInfoText("Download error please retry"); GameObject obj = Instantiate(bundle.LoadAsset("ExampleObject"),Vector3.zero,Quaternion.identity) as GameObject; // Unload the AssetBundles compressed contents to conserve memory //Debug.Log(obj); bundle.Unload(false); }
public static UIPackage AddPackage(AssetBundle desc, AssetBundle res, string resourceNamePrefix) { byte[] bytes = ((TextAsset)desc.mainAsset).bytes; if (desc != res) desc.Unload(true); return AddPackage(bytes, res, resourceNamePrefix); }
/// <summary> /// 卸载资源 /// </summary> /// <param name="bundle">卸载的资源</param> /// <param name="unload"></param> public static void UnLoadSource(AssetBundle bundle, bool unload) { if (bundle == null) { LCSConsole.WriteError("卸载资源为空!"); return; } bundle.Unload(unload); }
private IEnumerator Download(string url) { // Start a download of the given URL //Random argument added to the back of the URL to prevent caching string randomValue = "?t=" + Random.value; url += randomValue; www = new WWW(url); isDownloading = true; downloadStatus.color = Color.black; // Wait for download to complete yield return www; isDownloading = false; if (www.error != null) { Debug.Log(www.error); downloadStatus.text = www.error; } // Load and retrieve the AssetBundle bundle = www.assetBundle; if (bundle == null) { downloadStatus.color = Color.red; downloadStatus.text = DOWNLOAD_FAIL_MESSAGE; } // Load all the objects Object[] assetbundlesObject = bundle.LoadAllAssets(); foreach (Object o in assetbundlesObject) { objectCollection.AddGameObjects((GameObject)o); } objectCollection.PrepareUserObjects(); // Unload the AssetBundles compressed contents to conserve memory bundle.Unload(false); // Frees the memory from the web stream www.Dispose(); downloadStatus.color = Color.blue; downloadStatus.text = DOWNLOAD_PASS_MESSAGE; }
public IEnumerator LoadBundle() { ImBusy = true; string url = "file:///"+Path.GetFullPath(ResPath); MessageServiceClass.MessageProcessing("Loadin bundle from "+url); WWW www = WWW.LoadFromCacheOrDownload(url, version); yield return www; MessageServiceClass.MessageProcessing("Bundle resources are loaded from "+ url); assetBundle = www.assetBundle; CircleGameObjPref = assetBundle.Load("circle") as GameObject; for (int i = 0;i <4; i++){ BundleResourceTextures2d[i] = assetBundle.Load (BundleTexturesNames[i]) as Texture2D; }// int i = 0;i <4; i++ assetBundle.Unload(false); ImBusy = false; }
public static UIPackage AddPackage(AssetBundle desc, AssetBundle res, string resourceNamePrefix) { #if UNITY_5 byte[] bytes = desc.LoadAsset<TextAsset>(desc.GetAllAssetNames()[0]).bytes; #else byte[] bytes = ((TextAsset)desc.mainAsset).bytes; #endif if (desc != res) desc.Unload(true); return AddPackage(bytes, res, resourceNamePrefix); }
static IEnumerator _Load( string path, bool isScene, LoadContentInfo info ) { AssetBundle bundle = new AssetBundle(); if( !isScene ) { #if !UNITY_WEBPLAYER if( !FileExistLocally( path ) ) { Debug.Log("VirgoLoader::>>Downloading : " + path); WWW www = new WWW( path ); while( www.isDone == false ) { instance.percent = www.progress * 100; yield return null; } instance.percent = 100f; if( www.error != null ) { instance.OnLoadedAssetsError(new EventArgs()); Error("VirgoLoader::>>Error: " + www.error ); } else bundle = www.assetBundle; if(info.saveLocallyWhenBundle ) _SaveLocally( www ); } else { instance.StartCoroutine(LoadLocalFile( path )); } #endif #if UNITY_WEBPLAYER Debug.Log("Loader (WebPlayer)::>>Downloading : " + path); WWW www = new WWW( path ); while( www.isDone == false ) { instance.percent = www.progress * 100; yield return null; } instance.percent = 100f; if( www.error != null ) { instance.OnLoadedAssetsError(new EventArgs()); Error("VirgoLoader::>>Error: " + www.error ); } else bundle = www.assetBundle; #endif } else { Debug.Log("VirgoLoader::>>Loading scene locally : " + path ); AsyncOperation operation; if(!info.destroyAssetsInCurrentScene ) { operation = Application.LoadLevelAdditiveAsync( path ); } else { operation = Application.LoadLevelAsync( path ); } operation.allowSceneActivation = info.placeInSceneWhenLoaded; while( operation.progress < 1 ) { instance.percent = operation.progress * 100; yield return null; } instance.percent = 100f; } if( info.placeInSceneWhenLoaded && bundle != null) { if(!isScene) { Instantiate( bundle.mainAsset ); bundle.Unload(false); } } instance.OnLoadedAssetsComplete( new EventArgs()); }
//释放某AssetBundle public void UnLoadBundle(AssetBundle bundle) { string key = ""; foreach (DictionaryEntry de in BundleTable) { if (bundle == (AssetBundle)de.Value){ key = de.Key.ToString(); break; } } if (BundleTable.ContainsKey(key)) { BundleTable.Remove(key); } if (bundle != null) bundle.Unload(false); }
//--------------COROUTINES----------------------------------- /* LoadConf() * Chargement de la configuration d'abri par défaut **/ private IEnumerator LoadConf() { _isBuilding = true; Montage.assetBundleLock = true; //Attend que le objdata soit configuré while(gameObject.GetComponent<ObjData>()==null) { yield return new WaitForEndOfFrame(); } while(gameObject.GetComponent<ObjData>().GetObjectModel() == null) { yield return new WaitForEndOfFrame(); } _lib = GetComponent<ObjData>().GetObjectModel().GetLibrary(); //Récupération de l'assetbundle // OSLib libObj = GetComponent<ObjData>().GetObjectModel().GetLibrary(); WWW www = WWW.LoadFromCacheOrDownload (_lib.GetAssetBundlePath (), _lib.GetVersion ()); yield return www; if (www.error != null) { Debug.Log ("AssetBundle ERROR" + www.error); } else { _assetBundle = www.assetBundle; if (_assetBundle != null) { //Chargement de la config TextAsset confXml = _assetBundle.LoadAsset (modelName+"_conf", typeof (TextAsset)) as TextAsset; if (confXml != null) { _dsMdl.ParseConfFile(confXml); } } _assetBundle.Unload (false); } www.Dispose(); //Création de l'abri par default ArrayList stConf= _dsMdl.GetdefaultConf(); _currentColor = _dsMdl.GetColor(_currentColorIndex); if(stConf.Count > 0) { // SaveTransform(); _hasFacadeInDefaultBegin = false; _hasFacadeInDefaultEnd = false; for(int i=0;i<stConf.Count;i=i+3) { ModuleType typ = ModuleType.bloc; switch ((string)stConf[i]) { case "facade": typ = ModuleType.facade; break; case "bloc": typ = ModuleType.bloc; if(IsAbrifixe()) { typ = ModuleType.multiBloc; } break; case "extremite": typ = ModuleType.extremite; break; case "multibloc": typ = ModuleType.multiBloc; break; } if((typ == ModuleType.facade) && (i==0)) { _hasFacadeInDefaultBegin = true; _saveTailleBegin = (int) stConf[i+1]; _saveStyleBegin = (string) stConf[i+2]; continue; } if((typ == ModuleType.facade) && (i>0)) { _hasFacadeInDefaultEnd = true; _saveTailleEnd = (int) stConf[i+1]; _saveStyleEnd = (string) stConf[i+2]; continue; } int t = (int) stConf[i+1]; string styl = (string) stConf[i+2]; _nextInsertion = true; _decalZ = 0.0f; yield return StartCoroutine(AddModule(t,styl,typ,/*_dsMdl.GetColor(0)*/_currentColor,true)); } _isBuilding = false; } if(!_hasFacadeInDefaultEnd) { _selectedIndex = 0; if(IsAbrifixe()) _selectedIndex = Mathf.Clamp(_selectedIndex,1,_modules.Count-2); } UpdateCurrentModule(); UpdateModules(); UpdateBoxCollider(); ChangeModuleColor(_currentColor); // www.Dispose(); Montage.assetBundleLock = false; enabled = false; if(_hasFacadeInDefaultEnd) { yield return StartCoroutine(AddModule(_saveTailleEnd,_saveStyleEnd,ModuleType.facade,_currentColor,true)); _hasFacadeInDefaultEnd = false; _selectedIndex = 0; if(IsAbrifixe()) _selectedIndex = Mathf.Clamp(_selectedIndex,1,_modules.Count-2); } if(_hasFacadeInDefaultBegin) { _selectedIndex = 0; UpdateCurrentModule(); _nextInsertion = false; yield return StartCoroutine(AddModule(_saveTailleBegin,_saveStyleBegin,ModuleType.facade,_currentColor,true)); _hasFacadeInDefaultBegin = false; if(IsAbrifixe()) _selectedIndex = Mathf.Clamp(_selectedIndex,1,_modules.Count-2); UpdateCurrentModule(); UpdateModules(); UpdateBoxCollider(); } //CenterDeployAndFeetLimit(); yield return null; }
/// <summary> /// 动态更新图片, 打包版本使用 /// </summary> /// <param name="name"></param> /// <param name="isIcon"></param> /// <returns></returns> public Sprite LoadSprite(string name, bool isIcon = true) { if (isIcon) { //不同平台的 路径设置要不一样 if (ab_atlas_icon == null){ ab_atlas_icon = AssetBundle.CreateFromFile(Application.streamingAssetsPath + "/ui/sprite/UI_release.assetbundle"+GetPlatform()); ab_atlas_icon.Unload(false); } return ab_atlas_icon.LoadAsset(name, typeof(Sprite)) as Sprite; } else { if (ab_atlas_ui == null) ab_atlas_ui = AssetBundle.CreateFromFile(Application.streamingAssetsPath + "/ui/sprite/UI.assetbundle"); return ab_atlas_ui.LoadAsset(name) as Sprite; } }
//finish callback private void finish_callback(string path , AssetBundle res) { GameObject.Instantiate(res.mainAsset); res.Unload(false); }
private IEnumerator Start() { var www = WWW.LoadFromCacheOrDownload(BundleUrl, 0); yield return www; m_Bundle = www.assetBundle; createClip(); m_Bundle.Unload(false); }
void Response(AssetBundle bundle, Action<AssetBundle> callback) { callback(bundle); bundle.Unload (false); Destroy(gameObject); }
/// <summary> /// www加载AB资源 /// </summary> /// <returns></returns> public IEnumerator WWWLoad() { Debug.Log("WWWLoad 11"); WWW www = new WWW(assetPath); yield return www; Debug.Log("WWWLoad 22"); if (!string.IsNullOrEmpty(www.error)) { Debug.LogWarning("WWWLoad is error:" + www.error + "!AssetPath is " + assetPath); yield break; } assetBundle = www.assetBundle; if (assetBundle != null) { if (isMainAsset) { objectLoad = assetBundle.mainAsset; } else { if (assetBundle.Contains(assetName)) { if (isLoadSyn) objectLoad = null;//assetBundle.Load(assetName, typeof(Object)); else { Debug.Log("WWWLoad 33"); AssetBundleRequest abReq = null; //assetBundle.LoadAsync(assetName, typeof(Object)); yield return abReq; Debug.Log("WWWLoad 44"); if (abReq.isDone) objectLoad = abReq.asset; } } } } assetBundle.Unload(false); www.Dispose(); }
/* ChangeModuleStyle(int idx) * Changement de style d'un module par le idx ième * */ public IEnumerator ChangeModuleStyle(int idx, bool bsensfacade=false) { string newStyle = _tmpStylesNames[idx]; string newTag = _currentModule.GetModuleType().ToString()+"_t"+_currentModule.GetSize()+"_"+newStyle; if(newStyle != _currentModule.GetStyle()) { //Récupére le GameObject du nouveau style GameObject go = null; bool bextrem = false; //--vv--Copie un module éxistant pour éviter de réouvrir l'assetBundle--vv-- // foreach(DynShelterModule dsMod in _modules) // { // if(dsMod.GetTag() == newTag) // { // go = (GameObject)Instantiate(dsMod.GetGameObj()); // break; // } // } //--vv--Si il na pas deja été créé, ben tant pis on ouvre--vv-- // if(go == null) // { // OSLib libObj = GetComponent<ObjData>().GetObjectModel().GetLibrary(); WWW www = WWW.LoadFromCacheOrDownload (_lib.GetAssetBundlePath (), _lib.GetVersion ()); yield return www; if (www.error != null) { Debug.Log ("AssetBundle ERROR" + www.error); } else { _assetBundle = www.assetBundle; if (_assetBundle != null) { string sz = newTag; if(sz.Contains("extrem")) { bextrem = true; } Debug.Log("assetBundle.load : "+newTag); Object original = _assetBundle.LoadAsset (newTag, typeof(GameObject)); go = (GameObject) Instantiate (original); } _assetBundle.Unload (false); } www.Dispose(); // } SaveTransform(); go.transform.parent = transform; go.transform.localRotation = _currentModule.GetGameObj().transform.localRotation;//Quaternion.identity; go.transform.localScale = Vector3.one; if(bextrem) { if(bsensfacade) { go.transform.rotation = Quaternion.Euler(0.0f, 0.0f, 0.0f); //go.transform.Rotate(0.0f, 180.0f, 0.0f); } _currentModule.bextrem = true; } else { _currentModule.bextrem = false; } if(!IsAbrifixe()) { go.transform.localPosition = _currentModule.GetPos(); _modManager.TestModuleForGlobalMods(go); _modManager.RemoveModFrom(_currentModule.GetGameObj()); Destroy(_currentModule.GetGameObj()); _currentModule.ChangeStyle(newStyle,go); _modules[_selectedIndex] = _currentModule; //ChangeModuleColor(_currentColor); } else { int curMod=0; //foreach(DynShelterModule m in _modules) for(int modulIndex=0;modulIndex<_modules.Count;modulIndex++) { DynShelterModule m = (DynShelterModule) _modules[modulIndex]; if(m.GetModuleType()==_currentModule.GetModuleType()) { GameObject goCopy = (GameObject)Instantiate(go); goCopy.transform.parent = transform; goCopy.transform.localPosition = m.GetPos(); _modManager.TestModuleForGlobalMods(goCopy); _modManager.RemoveModFrom(m.GetGameObj()); Destroy(m.GetGameObj()); m.ChangeStyle(newStyle,goCopy); _modules[modulIndex] = m; } curMod++; } Destroy(go); } ChangeModuleColor(_currentColor); ReapplyTransform(); } yield return null; }
private IEnumerator UnloadAssetBundle(AssetBundle bundle) { yield return new WaitForSeconds(1.0f); bundle.Unload(false); }
/// <summary> /// Add a UI package from two assetbundles with a optional main asset name. /// </summary> /// <param name="desc">A assetbunble contains description file.</param> /// <param name="res">A assetbundle contains resources.</param> /// <param name="mainAssetName">Main asset name.</param> /// <returns>UIPackage</returns> public static UIPackage AddPackage(AssetBundle desc, AssetBundle res, string mainAssetName) { string source = null; #if UNITY_5 if (mainAssetName != null) { TextAsset ta = desc.LoadAsset<TextAsset>(mainAssetName); if (ta != null) source = ta.text; } else { string[] names = desc.GetAllAssetNames(); foreach (string n in names) { if (n.IndexOf("@") == -1) { TextAsset ta = desc.LoadAsset<TextAsset>(n); if (ta != null) { source = ta.text; if (mainAssetName == null) mainAssetName = Path.GetFileNameWithoutExtension(n); break; } } } } #else if (mainAssetName != null) { TextAsset ta = (TextAsset)desc.Load(mainAssetName, typeof(TextAsset)); if (ta != null) source = ta.text; } else { source = ((TextAsset)desc.mainAsset).text; mainAssetName = desc.mainAsset.name; } #endif if (source == null) throw new Exception("FairyGUI: invalid package."); if (desc != res) desc.Unload(true); return AddPackage(source, res, mainAssetName); }
public IEnumerator AddModule(int size,string style,ModuleType typ,Color32 color,bool fromInit=false, bool bsensfacade=false) { //Debug.Log("t : "+size+", styl : "+style+",ModuleType : "+ typ.ToString()+", bool "+fromInit); bool noNeedLimitToBeRecalculate = fromInit; _isBuilding = true; //-------vv-Récupération du mesh-vv------------ DynShelterModule newModule = null; string newStyle= string.Copy(style); string tag = CheckAndCreateTag(size,style,typ,out newStyle); style = string.Copy(newStyle); GameObject go = null; bool bextrem = false; //--vv--Si il na pas deja été créé, ben tant pis on ouvre--vv-- if(go == null) { // OSLib libObj = GetComponent<ObjData>().GetObjectModel().GetLibrary(); WWW www = WWW.LoadFromCacheOrDownload (_lib.GetAssetBundlePath (), _lib.GetVersion ()); yield return www; if (www.error != null) { Debug.Log ("AssetBundle ERROR" + www.error); } else { _assetBundle = www.assetBundle; if (_assetBundle != null) { string sz = _assetBundle.name; if(sz.Contains("extrem")) { bextrem = true; } // Debug.Log("assetBundle.load : "+tag); Object original = _assetBundle.LoadAsset (tag, typeof(GameObject)); if(original!=null){ go = (GameObject) Instantiate (original); } /*else { _assetBundle.Unload (false); www.Dispose(); }*/ } _assetBundle.Unload (false); } www.Dispose(); } //-------vv-Création du module-vv--------------- switch(typ) { case ModuleType.bloc: newModule = new DynShelterBloc(size,style,typ,color,this); break; case ModuleType.facade: noNeedLimitToBeRecalculate=true; newModule = new DynShelterFacade(size,style,typ,color,this); m_icounterFacade++; break; case ModuleType.extremite: newModule = new DynShelterExtrem(size,style,typ,color,this); break; case ModuleType.multiBloc: newModule = new DynShelterMultiBloc(size,style,ModuleType.bloc,color,this); if(_currentModule==null) { break; } if(_currentModule.GetType() == typeof(DynShelterBloc)) { DynShelterMultiBloc newCurrent = new DynShelterMultiBloc((DynShelterBloc)_currentModule); foreach(DynShelterModule dm in _modules) { if(dm.GetPrevModule() == _currentModule) dm.SetPrevModule(newCurrent); if(dm.GetNextModule() == _currentModule) dm.SetNextModule(newCurrent); } _currentModule = newCurrent; _modules[_selectedIndex] = _currentModule; } else { if(_currentModule.GetPrevModule() != null) { if(_currentModule.GetPrevModule().GetSize() == size && _currentModule.GetPrevModule().GetType() == typeof(DynShelterBloc)) { Debug.Log("Modifying Prev"); DynShelterMultiBloc newPrev = new DynShelterMultiBloc((DynShelterBloc)_currentModule.GetPrevModule()); int idx = _modules.IndexOf(_currentModule.GetPrevModule()); _modules[idx] = newPrev; _currentModule.SetNextModule(newPrev); } } if(_currentModule.GetNextModule() != null) { Debug.Log("Modifying Next"); if(_currentModule.GetNextModule().GetSize() == size && _currentModule.GetNextModule().GetType() == typeof(DynShelterBloc)) { DynShelterMultiBloc newNext = new DynShelterMultiBloc((DynShelterBloc)_currentModule.GetNextModule()); int idx = _modules.IndexOf(_currentModule.GetNextModule()); _modules[idx] = newNext; _currentModule.SetNextModule(newNext); } } } break; } SaveTransform(); go.transform.parent = transform; go.transform.localPosition = Vector3.zero; if(_currentModule != null) { if(bsensfacade && bextrem) { _currentModule.bextrem = true; go.transform.Rotate(0.0f, 180.0f, 0.0f); } else { _currentModule.bextrem = false; } } newModule.SetGameObject(go); _modManager.TestModuleForGlobalMods(go); //-------vv-Placement-vv----------------------- if(_currentModule != null) { // Debug.Log(" _currentModule not null"); if(_nextInsertion) { // Debug.Log(" _nextInsertion"); newModule.InsertBetween(_currentModule,_currentModule.GetNextModule()); print ("_selectedIndex :"+ _selectedIndex ); if( _selectedIndex+1 <= _modules.Count) { _modules.Insert(_selectedIndex+1,newModule); _selectedIndex++; } } else { // Debug.Log("Not _nextInsertion"); /* if(_currentModule.GetType() == typeof(DynShelterMultiBloc) && newModule.GetType() == typeof(DynShelterMultiBloc) && _currentModule.GetPrevModule().GetType() == typeof(DynShelterFacade)) { newModule.InsertBetween(_currentModule,_currentModule.GetNextModule()); _modules.Insert(_selectedIndex+1,newModule); } else*/ { newModule.InsertBetween(_currentModule.GetPrevModule(),_currentModule); _modules.Insert(_selectedIndex,newModule); } } //Déplacement Immobile ^^ QUICKFIX placement des facades a l'ajout de celles-ci _currentModule.MoveModuleV2(0,_currentModule,true,true); } else { // Debug.Log(" _currentModule null"); newModule.SetPos(false,0); newModule.SetNextPrevModule(null,null); newModule.SetNextPrevLocks(true,true); _modules.Add(newModule); //_selectedIndex = 0; } UI.SetItemsNb(_modules.Count); UpdateCurrentModule(); _removeModule = false; ChangeModuleColor(_currentColor); UpdateLimits(noNeedLimitToBeRecalculate); ReapplyTransform(); if(szbrand == "PoolCover") { UpdateBoxCollider(); UpdateVisibility(); } //CenterDeployAndFeetLimit(); yield return new WaitForEndOfFrame(); _isBuilding = false; }