Example #1
0
 public GameResPackage(string packname, string tag, bool isExist = true)
 {
     PackName  = packname;
     m_state   = ENState.enNone;
     m_isExist = isExist;
     if (tag == "PreLoad")
     {
         m_loadType = ENLoadType.enPreLoad;
     }
 }
Example #2
0
 //卸载
 public void Unload()
 {
     try
     {
         if (m_wLoad != null)
         {
             if (m_wLoad.error == null)
             {
                 m_assetbundle.Unload(false);
                 //Debug.LogWarning("unload, packname:" + PackName);
             }
         }
     }
     catch (System.Exception e)
     {
         Debug.LogError("package clean fail, packname:" + PackName + ",error:" + e.Message);
     }
     m_assetbundle = null;
     m_wLoad       = null;
     m_state       = ENState.enNone;
 }
Example #3
0
 public IEnumerator LoadPackageAsync(AsyncLoadPackageData data)
 {
     m_beUsedCount++;
     if (m_state == ENState.enNone || m_state == ENState.enFailed)
     {
         m_state = ENState.enLoading;
         int dependFinishCount = 0;
         foreach (var item in DependPack)
         {//load depend
             AsyncLoadPackageData packageData = new AsyncLoadPackageData();
             IEnumerator          e           = item.LoadPackageAsync(packageData);
             while (true)
             {
                 e.MoveNext();
                 if (packageData.m_isFinish)
                 {
                     break;
                 }
                 yield return(e.Current);
             }
             ++dependFinishCount;
         }
         if (m_isExist)
         {
             string url = ResPath.WLocalURLPrefix + ResPath.LocalPackagePath + PackName;
             if (m_wLoad == null)
             {
                 m_wLoad = new WWW(url);
             }
             while (!m_wLoad.isDone)
             {
                 yield return(m_wLoad);
             }
             if (null != m_wLoad.error)
             {
                 Debug.LogWarning("WWW load fail, url:" + url + ",error:" + m_wLoad.error);
                 m_state = ENState.enFailed;
                 m_wLoad = null;
             }
             else
             {
                 m_assetbundle = m_wLoad.assetBundle;
                 if (m_assetbundle == null)
                 {
                     Debug.LogWarning("load package fail, assetbundle is null");
                 }
                 else
                 {
                     //UnityEngine.Object[] objList = m_assetbundle.LoadAll();
                     //foreach (var item in objList)
                     //{
                     //}
                     m_state = ENState.enSucced;
                     Debug.Log("load package succ, packname:" + PackName);
                 }
             }
         }
         else
         {
             while (true)
             {
                 if (dependFinishCount == DependPack.Count)
                 {
                     break;
                 }
                 yield return(new WaitForSeconds(0.1f));
             }
             m_state = ENState.enSucced;
             Debug.Log("load package is not exist, packname:" + PackName);
         }
     }
     if (m_state == ENState.enLoading)
     {
         while (true)
         {
             if (m_state != ENState.enLoading)
             {
                 break;
             }
             yield return(new WaitForSeconds(0.5f));
         }
     }
     data.m_isFinish = true;
 }