public void SetAssetBundleName() { // 脑子不好,直接粗糙算法,直接按照顺序加下去 //int length = _assets_map.Count; float leftSize = EAssetBundleConst.ASSETBUILD_MAX_SIZE; string directory = EPathHelper.AbsoluteToRelativePathRemoveAssets(_directory); int nameIndex = 1; foreach (var info in _assetsMap) { string assetPath = info.Key; float fileSize = EMemorySizeHelper.CalculateTextureSizeBytes(assetPath); if (fileSize >= EAssetBundleConst.ASSETBUILD_MAX_SIZE) { SetAbName(info.Key, directory, nameIndex); nameIndex++; } else { if (leftSize >= fileSize) { SetAbName(assetPath, directory, nameIndex); leftSize = leftSize - fileSize; } else { nameIndex++; leftSize = EAssetBundleConst.ASSETBUILD_MAX_SIZE - fileSize; SetAbName(assetPath, directory, nameIndex); } } } }
/// <summary> /// 根据Asset的上层目录设置Asset的名字 /// </summary> public static void SetAbNameByDirectory(string assetPath) { AssetImporter importer = AssetImporter.GetAtPath(assetPath); if (importer != null) { // 剔除Assets/ string removeAssetPath = EPathHelper.AbsoluteToRelativePathRemoveAssets(assetPath); // 得到文件的目录 string str = EPathHelper.GetDirectory(removeAssetPath); importer.assetBundleName = str + EAssetBundleConst.ASSETBUNDLE_EXTENSION; importer.SaveAndReimport(); } else { Debug.LogError("找不到对应的路径的资源:" + assetPath); } }
public BuildAssetInOneAb(string path) { _directory = path; _abName = EPathHelper.AbsoluteToRelativePathRemoveAssets(_directory); _init(); }