Esempio n. 1
0
        /// <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);
 }
Esempio n. 3
0
        /// <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
        }