Esempio n. 1
0
 public TBundle(string key, AssetBundle ab)
 {
     this.ab  = ab;
     this.key = key;
     if (this.key.StartsWith("atlas/"))
     {
         aType   = E_AssetType.Atlas;
         useTime = TimerUtils.getSecTimer();
     }
 }
Esempio n. 2
0
        /// <summary>
        /// 获取相同类型的资产数量
        /// </summary>
        public int GetAssetCount(E_AssetType assetType)
        {
            int count  = 0;
            int length = _depAssetFiles.Count;

            for (int i = 0; i < length; i++)
            {
                var info = _depAssetFiles[i];
                if (info._assetType == assetType)
                {
                    count++;
                }
            }
            return(count);
        }
Esempio n. 3
0
        /// <summary>
        /// 得到某一类型的子资源列表
        /// </summary>
        public void FindAssetFiles(List <EAssetFileInfo> assets, E_AssetType assetType)
        {
            assets.Clear();

            int length = _depAssetFiles.Count;

            for (int i = 0; i < length; i++)
            {
                var info = _depAssetFiles[i];
                if (info._assetType == assetType)
                {
                    assets.Add(info);
                }
            }
        }
Esempio n. 4
0
        public static EAssetFileInfo FindAssetFile(long guid, long size, E_AssetType type)
        {
            if (_assetFileInfos == null)
            {
                _assetFileInfos = new Dictionary <EAssetFileInfoKey, EAssetFileInfo>();
            }

            EAssetFileInfo info;

            sKey.Guid      = guid;
            sKey.AssetType = type;
            sKey.Size      = size;
            if (!_assetFileInfos.TryGetValue(sKey, out info))
            {
                info = new EAssetFileInfo(guid);
                EAssetFileInfoKey newKey = sKey.CopyInfo();
                _assetFileInfos.Add(newKey, info);
            }
            return(info);
        }
Esempio n. 5
0
        public static void AppendType(StringBuilder sb, EAssetBundleFileInfo abFileInfo, E_AssetType assetType, bool isEdundance, string des)
        {
            List <EAssetFileInfo> assetFiles = new List <EAssetFileInfo>();

            abFileInfo.FindAssetFiles(assetFiles, assetType);
            if (assetFiles.Count == 0)
            {
                return;
            }

            float allSize = 0;
            int   length  = assetFiles.Count;

            for (int i = 0; i < length; i++)
            {
                bool result = assetFiles[i]._includedBundles.Count > 1;
                if (result == isEdundance)
                {
                    allSize += assetFiles[i].GetMemorySize();
                }
            }

            sb.Append(",," + des + "(" + allSize + ")");
            for (int i = 0; i < length; i++)
            {
                bool result = assetFiles[i]._includedBundles.Count > 1;
                if (result == isEdundance)
                {
                    string tmpSize = (assetFiles[i].GetMemorySize()).ToString("f2");
                    sb.Append("," + assetFiles[i]._assetName + "(" + tmpSize + "Kb)");
                }
            }
            sb.AppendLine();
        }
Esempio n. 6
0
        public static void AppendType0(StringBuilder sb, EAssetBundleFileInfo abFileInfo, E_AssetType assetType, bool isEdundance, string des)
        {
            List <EAssetFileInfo> assetFiles = new List <EAssetFileInfo>();

            abFileInfo.FindAssetFiles(assetFiles, assetType);
            if (assetFiles.Count == 0)
            {
                return;
            }

            sb.Append(",," + des);
            int length = assetFiles.Count;

            for (int i = 0; i < length; i++)
            {
                bool result = assetFiles[i]._includedBundles.Count > 1;
                if (result == isEdundance)
                {
                    sb.Append("," + assetFiles[i]._assetName);
                }
            }
            sb.AppendLine();
        }
Esempio n. 7
0
        // 分析Asset Object信息
        private static void AnalyzeAssetObject(Object assetObject, EAssetBundleFileInfo assetbundleFileInfo)
        {
            bool inBuilt = false;
            // 1.检测类型需要符合要求
            E_AssetType assetType = AssetBundleAnallyzeObject.CheckObject(assetObject, assetbundleFileInfo, ref inBuilt);

            long size = EMemorySizeHelper.GetRuntimeMemorySize(assetObject);

            if (assetType == E_AssetType.NONE)
            {
                return;
            }

            if (_inspectorMode == null)
            {
                _inspectorMode = typeof(SerializedObject).GetProperty("inspectorMode", BindingFlags.NonPublic | BindingFlags.Instance);
            }

            // 得到guid
            SerializedObject serializedObject = new SerializedObject(assetObject);

            if (_inspectorMode != null)
            {
                _inspectorMode.SetValue(serializedObject, InspectorMode.Debug, null);
            }
            SerializedProperty pathIdProp = serializedObject.FindProperty(EAssetBundleConst.LOCAL_ID_DENTFIER_IN_FILE);

            if (pathIdProp == null)
            {
                Debug.LogError("得到Id失败:" + assetbundleFileInfo.AbName + "_" + assetObject);
                return;
            }
            long guid = pathIdProp.longValue;

            List <KeyValuePair <string, System.Object> > propertys = new List <KeyValuePair <string, object> >();

            if (AssetBundleAnallyzeObject._funMap.ContainsKey(assetType))
            {
                propertys.AddRange(AssetBundleAnallyzeObject._funMap[assetType].Invoke(assetObject, serializedObject));
            }

            if (assetbundleFileInfo.IsAssetContain(guid))
            {
                Debug.LogAssertionFormat("[{0}]已经存在了[{1}]资源", assetbundleFileInfo.AbName, assetObject.name);
                serializedObject.Dispose();
                return;
            }
            if (assetType == E_AssetType.TEXTURE)
            {
                size = (long)propertys[5].Value;
            }
            EAssetFileInfo assetFileInfo = FindAssetFile(guid, size, assetType);

            assetFileInfo._memorysize = size;
            assetFileInfo.InitAsset   = true;
            assetFileInfo._assetName  = assetObject.name;
            assetFileInfo._assetType  = assetType;
            assetFileInfo._inBuilt    = inBuilt;
            assetFileInfo._propertys  = propertys;


            if (assetObject.name.Contains("11001_N") && assetType == E_AssetType.TEXTURE)
            {
                string path = AssetDatabase.GetAssetPath(assetObject);
                Debug.Log("guid:" + guid + "_" + assetbundleFileInfo.AbName + "_" + EMemorySizeHelper.GetRuntimeMemorySize(assetObject) + "_" + size + "_" + path);
            }

            // AssetBundle包含了Asset资源
            assetbundleFileInfo.AddDepAssetFile(assetFileInfo);
            // Asset被指定的AssetBundle引用
            assetFileInfo.AddParent(assetbundleFileInfo);
            serializedObject.Dispose();

            AssetRepeatReport.AddAssetFile(assetFileInfo);
        }