/// <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(); } }
/// <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]); } }
public void UnloadBelongedAssetbundle(string fullPathInResources) { ResourcePackerInfo resourceBelongedPackerInfo = GetResourceBelongedPackerInfo(fullPathInResources); if (resourceBelongedPackerInfo != null && resourceBelongedPackerInfo.IsAssetBundleLoaded()) { resourceBelongedPackerInfo.UnloadAssetBundle(false); } }
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); }
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); } } }