예제 #1
0
    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);
        }
    }
예제 #2
0
 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;
 }
예제 #3
0
    // 加载特效
    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);
        }
    }
예제 #4
0
    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);
    }
예제 #5
0
    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);
        }
    }
예제 #6
0
    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);
    }