/// <summary> /// 初始化资源信息 /// </summary> /// <param name="buffer"></param> private void InitAssetInfo(byte[] buffer) { buffer = ZlibHelper.DeCompressBytes(buffer); MMO_MemoryStream ms = new MMO_MemoryStream(buffer); int len = ms.ReadInt(); int depLen = 0; for (int i = 0; i < len; i++) { AssetEntity entity = new AssetEntity(); entity.Category = (AssetCategory)ms.ReadByte(); entity.AssetFullName = ms.ReadUTF8String(); entity.AssetBundleName = ms.ReadUTF8String(); depLen = ms.ReadInt(); if (depLen > 0) { entity.DependsAssetList = new List <AssetDependsEntity>(depLen); for (int j = 0; j < depLen; j++) { AssetDependsEntity assetDepends = new AssetDependsEntity(); assetDepends.Category = (AssetCategory)ms.ReadByte(); assetDepends.AssetFullName = ms.ReadUTF8String(); entity.DependsAssetList.Add(assetDepends); } } m_AssetInfoDic[entity.Category][entity.AssetFullName] = entity; } }
/// <summary> /// 重置 /// </summary> private void Reset() { m_OnComplete = null; m_CurrAssetEntity = null; m_CurrResourceEntity = null; m_NeedLoadAssetDependCount = 0; m_CurrLoadAssetDependCount = 0; m_DependsResourceList.Clear(); GameEntry.Pool.EnqueueClassObject(this); }
/// <summary> /// 根据资源分类和资源路径获取资源信息 /// </summary> /// <param name="assetCategory">资源分类</param> /// <param name="assetFullName">资源路径</param> /// <returns>资源信息</returns> public AssetEntity GetAssetEntity(AssetCategory assetCategory, string assetFullName) { Dictionary <string, AssetEntity> dicCategory = null; if (m_AssetInfoDic.TryGetValue(assetCategory, out dicCategory)) { AssetEntity entity = null; if (dicCategory.TryGetValue(assetFullName, out entity)) { return(entity); } } GameEntry.LogError("assetFullName=>{0}不存在", assetFullName); return(null); }
/// <summary> /// 加载主资源 /// </summary> /// <param name="assetCategory">资源分类</param> /// <param name="assetFullName">资源路径</param> public void Load(AssetCategory assetCategory, string assetFullName, BaseAction <ResourceEntity> onComplete = null) { #if DISABLE_ASSETBUNDLE && UNITY_EDITOR Debug.LogError("取池"); m_CurrResourceEntity = GameEntry.Pool.DequeueClassObject <ResourceEntity>(); m_CurrResourceEntity.Category = assetCategory; m_CurrResourceEntity.IsAssetBundle = false; m_CurrResourceEntity.ResourceName = assetFullName; m_CurrResourceEntity.Target = UnityEditor.AssetDatabase.LoadAssetAtPath <GameObject>(assetFullName); if (onComplete != null) { onComplete(m_CurrResourceEntity); } #else m_OnComplete = onComplete; m_CurrAssetEntity = GameEntry.Resource.ResourceLoaderManager.GetAssetEntity(assetCategory, assetFullName); LoadDependsAsset(); #endif }