/// <summary> /// 加载共享资源 /// </summary> /// <param name="assetPath">共享资源路径</param> /// <param name="onGenerated">加载完成回调</param> public void LoadSharedAssets(string assetPath, Action onGenerated = null) { string assetName = getAssetNameFromPath(assetPath); //打包以后的共享文件的名字 if (loaderDic != null) { if (loaderDic.ContainsKey(assetName)) { ResourcesLoad loader = loaderDic[assetName]; if (loader.Bundle != null) { if (onGenerated != null) { onGenerated(); } } } else { ResourcesLoad loader = new ResourcesLoad(assetPath); loaderDic.Add(assetName, loader); view.StartCoroutine(LoadSharedAssetsCor(loader, assetPath, onGenerated)); } } }
/// <summary> /// 加载共享资源协程 /// </summary> /// <param name="assetPath">共享资源路径</param> /// <param name="onGenerated">加载完成回调</param> public IEnumerator LoadSharedAssetsCor(ResourcesLoad load, string assetPath, Action onGenerated) { yield return(view.StartCoroutine(load.LoadSharedAssets())); if (onGenerated != null) { onGenerated(); } }
/// <summary> /// 释放游戏体占用的所有内存 /// </summary> /// <param name="assetName"></param> public void Release(string assetName) { foreach (string key in loaderDic.Keys) { if (key == assetName) { ResourcesLoad loader = loaderDic[key]; loader.Release(); break; } } loaderDic.Remove(assetName); //如果没有这个元素,返回false }
/// <summary> /// 加载资源 /// </summary> /// <param name="isLocal">是否本地resources目录加载,否则为AB加载</param> /// <param name="assetPath">资源路径</param> /// <param name="assetName">资源名称,打包时设置的名称</param> /// <param name="isMainAsset">是否主资源(打包时设置)</param> /// <param name="isLoadSyn">是否同步加载,false为异步加载</param> /// <param name="onGenerated">加载完的回调,GameObject:资源对象</param> public void LoadAssets(bool isLocal, string assetPath, string assetName, bool isMainAsset, bool isLoadSyn, Action <GameObject> onLoaded = null) { Debug.Log("assetPath::" + assetPath); if (string.IsNullOrEmpty(assetName)) { if (isLocal) { assetName = getPrefabNameFromPath(assetPath); } else { assetName = getAssetNameFromPath(assetPath); } } if (loaderDic != null) { if (loaderDic.ContainsKey(assetName)) { ResourcesLoad loader = loaderDic[assetName]; GameObject go = (GameObject)loader.ObjectLoad; if (go != null) { go.name = assetName; } if (onLoaded != null) { onLoaded(go); } } else { ResourcesLoad loader = new ResourcesLoad(assetPath, assetName, isMainAsset, isLoadSyn); loaderDic.Add(assetName, loader); view.StartCoroutine(LoadAssetsCor(loader, isLocal, assetPath, assetName, isMainAsset, isLoadSyn, onLoaded)); } } }
void Start() { SoundManager soundM = SoundManager.Instance; touchGestureDetector.onGestureDetected.AddListener((gesture, touchInfo) => { if (gesture == TouchGestureDetector.Gesture.TouchBegin) { TouchCheck(); } switch (gesture) { case TouchGestureDetector.Gesture.TouchBegin: case TouchGestureDetector.Gesture.TouchMove: case TouchGestureDetector.Gesture.TouchStationary: Vector3 pos = TouchPosition.TouchToCanvas(); transform.localPosition = pos; effect.Emit(1); break; } if (gesture == TouchGestureDetector.Gesture.Click) { GameObject hit; if (touchInfo.HitDetection(out hit)) { if (!hit.GetComponent <NegativeTouched>()) { soundM.PlayWithFade(SoundAsset.SETag.PositiveButton); } } } }); GameObject effectObj = ResourcesLoad.Load <GameObject>("Effects/TouchEffect"); //GetComponent<ParticleSystem>(); GameObject newObj = Instantiate(effectObj.gameObject, transform); effect = newObj.GetComponent <ParticleSystem>(); }
/// <summary> /// 资源加载协程 /// </summary> /// <param name="assetPath">资源路径</param> /// <param name="assetName">资源名称,打包时设置的名称</param> /// <param name="isMainAsset">是否主资源(打包时设置)</param> /// <param name="isLoadSyn">是否同步加载,false为异步加载</param> /// <param name="onGenerated">生成完的回调</param> /// <returns></returns> public IEnumerator LoadAssetsCor(ResourcesLoad load, bool isLocal, string assetPath, string assetName, bool isMainAsset, bool isLoadSyn, Action <GameObject> onLoaded) { if (isLocal) { yield return(view.StartCoroutine(load.LocalLoad())); } else { yield return(view.StartCoroutine(load.WWWLoad())); } GameObject go = (GameObject)load.ObjectLoad; if (go != null) { go.name = assetName; } if (onLoaded != null) { onLoaded(go); } }
/// <summary> /// 释放游戏体占用的所有内存 /// </summary> /// <param name="go"></param> public void Release(GameObject go) { string name = string.Empty; if (go != null) { name = go.name; GameObject.Destroy(go); //释放clone的对象 go = null; } bool removeable = false; foreach (string key in loaderDic.Keys) { if (key == name) { ResourcesLoad loader = loaderDic[key]; loader.RefCount--; if (loader.RefCount == 0) { removeable = true; loader.Release(); loader = null; } break; } } if (removeable) { loaderDic.Remove(name); } }