Esempio n. 1
0
    /// <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));
            }
        }
    }
Esempio n. 2
0
    /// <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();
        }
    }
Esempio n. 3
0
    /// <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
    }
Esempio n. 4
0
    /// <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));
            }
        }
    }
Esempio n. 5
0
        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>();
        }
Esempio n. 6
0
    /// <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);
        }
    }
Esempio n. 7
0
    /// <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);
        }
    }