Esempio n. 1
0
        // Returns true if more Update calls are required.
        public override bool Update()
        {
            if (m_Request != null)
            {
                return(false);
            }

            LoadedWWW bundle = AssetManager.GetLoadedAssetBundle(m_AssetBundleName, out m_DownloadingError);

            if (bundle != null)
            {
                ///@TODO: When asset bundle download fails this throws an exception...
                if (m_loadall)
                {
                    m_Request = bundle.m_AssetBundle.LoadAllAssetsAsync();
                }
                else
                {
                    m_Request = bundle.m_AssetBundle.LoadAssetAsync(m_AssetName, m_Type);
                }
                return(false);
            }
            else
            {
                return(!IsDone());
            }
        }
Esempio n. 2
0
        public override bool Update()
        {
            if (m_Request != null)
            {
                return(false);
            }

            LoadedWWW bundle = AssetManager.GetLoadedAssetBundle(m_AssetBundleName, out m_DownloadingError);

            if (bundle != null)
            {
                if (m_IsAdditive)
                {
                    m_Request = SceneManager.LoadSceneAsync(m_LevelName, LoadSceneMode.Additive);
                }
                else
                {
                    m_Request = SceneManager.LoadSceneAsync(m_LevelName, LoadSceneMode.Single);
                }
                // AssetBundleManager.UnloadAssetBundle(m_AssetBundleName);
                return(false);
            }
            else
            {
                return(!IsDone());
            }
        }
Esempio n. 3
0
        static protected void UnloadAssetBundleInternal(string assetBundleName)
        {
            string    error;
            LoadedWWW bundle = GetLoadedAssetBundle(assetBundleName, out error);

            if (bundle == null)
            {
                return;
            }

            if (--bundle.m_ReferencedCount == 0)
            {
                if (bundle.m_AssetBundle != null)
                {
                    bundle.m_AssetBundle.Unload(false);
                }
                else
                {
                    bundle.m_normalres = null;
                    Debug.LogError("LLLLLLLLLLLLLLLLLLLLLLL");
                    //普通资源清掉
                }
                m_LoadedAssetBundles.Remove(assetBundleName);

                Log(LogType.Info, assetBundleName + " has been unloaded successfully");
            }
        }
Esempio n. 4
0
		// Get loaded AssetBundle, only return vaild object when all the dependencies are downloaded successfully.
		static public LoadedWWW GetLoadedAssetBundle (string assetBundleName, out string error)
		{
			if (m_DownloadingErrors.TryGetValue(assetBundleName, out error) )
				return null;
		
			LoadedWWW bundle = null;
			m_LoadedAssetBundles.TryGetValue(assetBundleName, out bundle);
			if (bundle == null)
				return null;
			
			// No dependencies are recorded, only the bundle itself is required.
			string[] dependencies = null;
			if (!m_Dependencies.TryGetValue(assetBundleName, out dependencies) )
				return bundle;
			
			// Make sure all dependencies are loaded
			foreach(var dependency in dependencies)
			{
				if (m_DownloadingErrors.TryGetValue(assetBundleName, out error) )
					return bundle;
	
				// Wait all the dependent assetBundles being loaded.
				LoadedWWW dependentBundle;
				m_LoadedAssetBundles.TryGetValue(dependency, out dependentBundle);
				if (dependentBundle == null)
					return null;
			}
	
			return bundle;
		}
Esempio n. 5
0
		// Where we actuall call WWW to download the assetBundle.
		static protected bool LoadResInternal (string assetBundleName, EResType t, bool isLoadingAssetBundleManifest)
		{
			// Already loaded.
			LoadedWWW bundle = null;
			m_LoadedAssetBundles.TryGetValue(assetBundleName, out bundle);
			if (bundle != null)
			{
				bundle.m_ReferencedCount++;
				return true;
			}
	
			// @TODO: Do we need to consider the referenced count of WWWs?
			// In the demo, we never have duplicate WWWs as we wait LoadAssetAsync()/LoadLevelAsync() to be finished before calling another LoadAssetAsync()/LoadLevelAsync().
			// But in the real case, users can call LoadAssetAsync()/LoadLevelAsync() several times then wait them to be finished which might have duplicate WWWs.
			if (m_DownloadingWWWs.ContainsKey(assetBundleName) )
				return true;
	
			WWW download = null;
            string url = null;
            switch (t)
            {
                case EResType.E_AssetBundle:
                  url =   m_BaseDownloadingURL + "/assetbundle/" +assetBundleName;
                    break;
                case EResType.E_TEXTURE:
                    url = m_BaseDownloadingURL + "/texture/" +assetBundleName;
                    break;
                case EResType.E_BYTE:
                    url = m_BaseDownloadingURL + "/config/" + assetBundleName;
                    break;
                case EResType.E_TXT:
                    url = m_BaseDownloadingURL + "/config/" + assetBundleName;
                    break;
                case EResType.E_AudioClip:
                    url = m_BaseDownloadingURL + "/sound/" + assetBundleName;
                    break;
                default:
                    break;
            }
          
            //Debug.Log(url);
            // For manifest assetbundle, always download it as we don't have hash for it.
            if (isLoadingAssetBundleManifest)
                download = new WWW(url);
            else
            {
                //yadoutodo
                //   download = WWW.LoadFromCacheOrDownload(url, m_AssetBundleManifest.GetAssetBundleHash(assetBundleName), 0);
                download = new WWW(url);
            }
			m_DownloadingWWWs.Add(assetBundleName, new WWWLoadInfo(download,t));
	
			return false;
		}
Esempio n. 6
0
 public override bool Update()
 {
     m_loaded = AssetManager.GetLoadedAssetBundle(m_texturename, out m_DownloadingError);
     if (m_loaded != null)
     {
         return(false);
     }
     else
     {
         return(!IsDone());
     }
 }
Esempio n. 7
0
 static public void UnloadNormalRes(string resname)
 {
     LoadedWWW load = null;
    if(m_LoadedAssetBundles.TryGetValue(resname,out load))
    {
         if (null != load.m_normalres)
         {
             load.m_normalres.Distory();                        
         }
         m_LoadedAssetBundles.Remove(resname);
    }
 }