public void AddTexList(Object[] objs) { foreach (Object t in objs) { if (t is Texture2D) { TexCount++; float mem = EMemorySizeHelper.GetRuntimeMemorySize(t) / 2f; TexMemSize += mem; tex_mem_map.Add(t.name, mem); } } }
// 分析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); }