private static void ProcessLoad(WWW www, string bundlePath, string bundleName, LoadSingleFinish delFinish, object param1, object param2, object param3) { GameObject retObj = null; if (null != www.assetBundle) { retObj = www.assetBundle.mainAsset as GameObject; #if UNITY_EDITOR ChangeShader(retObj.transform); #endif www.assetBundle.Unload(false); if (m_dicSingleBundleRef.ContainsKey(bundlePath) && m_dicSingleBundleRef[bundlePath] > 1) { m_dicSingleBundleCache.Add(bundlePath, retObj); m_dicSingleBundleRef.Remove(bundlePath); } } else { LogMgr.UnityLog("load single assetbundle none :" + bundleName); } if (null != delFinish) { delFinish(bundleName, retObj, param1, param2, param3); } }
public void ResetData(LoadType loadType, string modelName, LoadSingleFinish delFinish, object param1, object param2, object param3) { m_modelName = modelName; m_delFinish = delFinish; m_param1 = param1; m_param2 = param2; m_param3 = param3; m_loadType = loadType; }
// 加载特效 public static IEnumerator LoadEffect(string modelName, LoadSingleFinish delFinish, object param1 = null, object param2 = null) { string loadPath = GetBundleLoadUrl(BundleManager.PathEffectPrefab, modelName + ".data"); if (!LoadFromCache(loadPath, modelName, delFinish, param1, param2, null)) { WWW www = new WWW(loadPath); yield return(www); ProcessLoad(www, loadPath, modelName, delFinish, param1, param2, null); } }
public static void LoadModelInQueue(string modelName, LoadSingleFinish delFinish, object param1, object param2, object param3) { ModelLoadData curData = new ModelLoadData(ModelLoadData.LoadType.MODEL, modelName, delFinish, param1, param2, param3); if (m_dicSingleBundleCache.ContainsKey(curData.GetLoadUrl())) { if (null != delFinish) { delFinish(modelName, m_dicSingleBundleCache[curData.GetLoadUrl()], param1, param2, param3); } return; } m_loadBundleQueue.Enqueue(curData); }
private static void ProcessLoad(WWW www, string bundlePath, string bundleName, LoadSingleFinish delFinish, object param1, object param2, object param3) { GameObject retObj = null; #if UNITY_WP8 if (m_dicSingleBundleCache.ContainsKey(bundlePath)) { if (null != delFinish) { delFinish(bundleName, m_dicSingleBundleCache[bundlePath], param1, param2, param3); } return; } #endif if (null != www.assetBundle) { retObj = www.assetBundle.mainAsset as GameObject; #if UNITY_EDITOR ChangeShader(retObj.transform); #endif #if UNITY_WP8 m_SingleBundleList.Add(bundlePath, www.assetBundle); #else CacheBundle(www); #endif if (m_dicSingleBundleRef.ContainsKey(bundlePath) && #if UNITY_WP8 m_dicSingleBundleRef[bundlePath] >= 1 #else m_dicSingleBundleRef[bundlePath] > 1 #endif ) { m_dicSingleBundleCache.Add(bundlePath, retObj); m_dicSingleBundleRef.Remove(bundlePath); } } else { LogModule.ErrorLog("load single assetbundle none :" + bundleName); } if (null != delFinish) { delFinish(bundleName, retObj, param1, param2, param3); } }
private static bool LoadFromCache(string bundlePath, string bundleName, LoadSingleFinish delFinish, object param1, object param2, object param3) { if (m_dicSingleBundleCache.ContainsKey(bundlePath)) { if (null != delFinish) { delFinish(bundleName, m_dicSingleBundleCache[bundlePath], param1, param2, param3); } return(true); } if (m_dicSingleBundleRef.ContainsKey(bundlePath)) { m_dicSingleBundleRef[bundlePath]++; } else { m_dicSingleBundleRef.Add(bundlePath, 1); } return(false); }