Exemple #1
0
    /// <summary>
    /// 加载资源,优先保证从AB包里面(Resources文件夹外部),其次是通过C#IO流加
    /// 载(Resources文件夹外部),最后通过Resources加载((Resources文件夹内存)).
    /// </summary>
    /// <param name="resourceBase">资源基本数据</param>
    private void LoadResource(ResourceBase resourceBase)
    {
        ResourcePackerInfo resourceBelongedPackerInfo = GetResourceBelongedPackerInfo(resourceBase);

        if (resourceBelongedPackerInfo != null)
        {
            if (resourceBelongedPackerInfo.isAssetBundle)
            {
                if (!resourceBelongedPackerInfo.IsAssetBundleLoaded())
                {
                    resourceBelongedPackerInfo.LoadAssetBundle(FileManager.GetIFSExtractPath());
                }

                resourceBase.LoadFromAssetBundle(resourceBelongedPackerInfo);
                if (resourceBase.unloadBelongedAssetBundleAfterLoaded)
                {
                    resourceBelongedPackerInfo.UnloadAssetBundle(false);
                }
            }
            else
            {
                resourceBase.Load(FileManager.GetIFSExtractPath());
            }
        }
        else
        {
            resourceBase.Load();
        }
    }
Exemple #2
0
    /// <summary>
    /// 从AssetBundle中加载资源
    /// </summary>
    /// <param name="resourcePackerInfo">AB资源包信息</param>
    public void LoadFromAssetBundle(ResourcePackerInfo resourcePackerInfo)
    {
        if (m_isAbandon)
        {
            m_state = enResourceState.Unload;
            return;
        }
        string name = FileManager.EraseExtension(m_name);;

        if (m_contentType == null)
        {
            m_content = resourcePackerInfo.assetBundle.LoadAsset(name);
        }
        else
        {
            m_content = resourcePackerInfo.assetBundle.LoadAsset(name, m_contentType);
        }
        m_state = enResourceState.Loaded;
        if (m_content != null && m_content.GetType() == typeof(TextAsset))
        {
            BinaryObject binaryObject = ScriptableObject.CreateInstance <BinaryObject>();
            binaryObject.data = (m_content as TextAsset).bytes;
            m_content         = binaryObject;
        }
    }
 private void AddResourcePackerInfoAll(ResourcePackerInfo resourceInfo)
 {
     resourcePackerInfosAll.Add(resourceInfo);
     for (int i = 0; i < resourceInfo.childrens.Count; i++)
     {
         AddResourcePackerInfoAll(resourceInfo.childrens[i]);
     }
 }
 public void AddResourcePackerInfo(ResourcePackerInfo resourceInfo)
 {
     resourcePackerInfosAll.Add(resourceInfo);
     for (int i = 0; i < resourceInfo.childrens.Count; ++i)
     {
         AddResourcePackerInfoAll(resourceInfo.childrens[i]);
     }
 }
Exemple #5
0
    public void UnloadBelongedAssetbundle(string fullPathInResources)
    {
        ResourcePackerInfo resourceBelongedPackerInfo = GetResourceBelongedPackerInfo(fullPathInResources);

        if (resourceBelongedPackerInfo != null && resourceBelongedPackerInfo.IsAssetBundleLoaded())
        {
            resourceBelongedPackerInfo.UnloadAssetBundle(false);
        }
    }
Exemple #6
0
 private ResourcePackerInfo GetResourceBelongedPackerInfo(ResourceBase resourceBase)
 {
     if (m_resourcePackerInfoSet != null)
     {
         ResourcePackerInfo resourceBelongedPackerInfo = m_resourcePackerInfoSet.GetResourceBelongedPackerInfo(resourceBase.key);
         return(resourceBelongedPackerInfo);
     }
     return(null);
 }
    public ResourcePackerInfo GetResourceBelongedPackerInfo(int resourceKeyHash)
    {
        ResourcePackerInfo info = null;

        if (m_resourceMap.TryGetValue(resourceKeyHash, out info))
        {
            return(info);
        }
        return(null);
    }
Exemple #8
0
 private void UnloadAllAssetBundles()
 {
     if (m_resourcePackerInfoSet == null)
     {
         return;
     }
     for (int i = 0; i < m_resourcePackerInfoSet.resourcePackerInfosAll.Count; i++)
     {
         ResourcePackerInfo resourcePackerInfo = m_resourcePackerInfoSet.resourcePackerInfosAll[i];
         if (resourcePackerInfo.IsAssetBundleLoaded())
         {
             resourcePackerInfo.UnloadAssetBundle(false);
         }
     }
 }