//アセットバンドルのリストを取得 List <MainAssetInfo> GetAssetBudleList(AssetFileManagerSettings settings) { List <MainAssetInfo> assets = new List <MainAssetInfo>(); //指定ディレクトリ以下のアセットを全て取得 MainAssetInfo inputDirAsset = new MainAssetInfo(AssetBundleDirectory); foreach (MainAssetInfo asset in inputDirAsset.GetAllChidren()) { if (asset.IsDirectory) { continue; } if (IsIgnoreAssetBundle(asset)) { continue; } AssetFileSetting assetFileSetting = settings.FindSettingFromPath(asset.AssetPath); AssetFileEncodeType encodeType = assetFileSetting.EncodeType; switch (encodeType) { case AssetFileEncodeType.AssetBundle: assets.Add(asset); break; default: break; } } return(assets); }
public AssetFileBase(string filePath, AssetFileSetting setting, StringGridRow rowData) { this.FileName = filePath; this.FileType = setting.FileType; this.EncodeType = setting.EncodeType; this.SubFiles = new Dictionary <string, AssetFile>(); this.RowData = rowData; }
//ファイルパスから設定データを取得 public AssetFileSetting FindSettingFromPath(string path) { AssetFileSetting setting = fileSettings.Find(x => (x.ContaisnsExtenstions(path))); if (setting == null) { setting = Find(AssetFileType.UnityObject); } return(setting); }
//Settingsプロパティの描画 void DrawAssetFileManagerSettingsProperty(SerializedProperty property) { property = property.Copy(); string rootPath = property.propertyPath + "."; UtageEditorToolKit.BeginGroup("Load Setting"); SerializedObjectHelper.DrawProperty(rootPath + "loadType"); //タブの表示 List <string> tabName = new List <string>(); foreach (AssetFileSetting setting in Settings.FileSettings) { tabName.Add(setting.FileType.ToString()); } tabIndex = GUILayout.Toolbar(tabIndex, tabName.ToArray(), EditorStyles.toolbarButton); //タブの中身の表示 string arrayRootPath = rootPath + "fileSettings." + string.Format("Array.data[{0}]", tabIndex) + "."; bool isAdVanced = Settings.LoadTypeSetting == AssetFileManagerSettings.LoadType.Advanced; AssetFileSetting currentSetting = Settings.FileSettings[tabIndex]; GUILayout.Space(-5f); EditorGUILayout.BeginVertical("box"); EditorGUI.indentLevel++; { GUILayout.Space(4f); GUILayout.BeginHorizontal(); EditorGUILayout.BeginVertical(); //AdVanced以外では編集不可 if (isAdVanced) { SerializedObjectHelper.DrawProperty(arrayRootPath + "isStreamingAssets"); SerializedObjectHelper.DrawProperty(arrayRootPath + "encodeType"); } else { EditorGUI.BeginDisabledGroup(true); EditorGUILayout.Toggle("IsStreamingAssets", currentSetting.IsStreamingAssets); EditorGUILayout.LabelField("EncodeType", currentSetting.EncodeType.ToString()); EditorGUI.EndDisabledGroup(); } SerializedObjectHelper.DrawProperty(arrayRootPath + "extensions"); } EditorGUI.indentLevel--; UtageEditorToolKit.EndGroup(); UtageEditorToolKit.EndGroup(); }
public bool TryVersionUpFileFromMem(string fileKey, byte[] buffer, out ConvertFileList.CusomFileVersionUpInfo versionUpInfo) { string outputFileName = FilePathUtil.Combine(OutputResourcesPath, fileKey); AssetFileSetting setting = Settings.FindSettingFromPath(outputFileName); if (setting.EncodeType == AssetFileEncodeType.AlreadyEncoded) { outputFileName += ExtensionUtil.UtageFile; } bool isVersionUp = TryConvertFileFromMem(outputFileName, buffer); versionUpInfo = new ConvertFileList.CusomFileVersionUpInfo(fileKey, isVersionUp); return(isVersionUp); }
//リソースファイルをバージョンアップ public void VersionUpResouces(string keyFiles, Object resourcesDir, bool isOnlyNew) { //指定ディレクトリ以下のアセットを全て取得 MainAssetInfo inputDirAsset = new MainAssetInfo(resourcesDir); List <MainAssetInfo> assets = inputDirAsset.GetAllChidren(); string inputDir = inputDirAsset.AssetPath; List <ConvertFileList.CusomFileVersionUpInfo> customFileVersionUpInfoList = new List <ConvertFileList.CusomFileVersionUpInfo>(); int convertFileCount = 0; int versionUpCount = 0; foreach (MainAssetInfo asset in assets) { if (asset.IsDirectory) { continue; } AssetFileSetting assetFileSetting = Settings.FindSettingFromPath(asset.AssetPath); AssetFileEncodeType encodeType = assetFileSetting.EncodeType; switch (encodeType) { case AssetFileEncodeType.AlreadyEncoded: { ++convertFileCount; bool isVersionUp = TryConvertToUtageFile(asset, inputDir, isOnlyNew); if (isVersionUp) { ++versionUpCount; } string fileKey = FilePathUtil.RemoveDirectory(asset.AssetPath, inputDir); customFileVersionUpInfoList.Add(new ConvertFileList.CusomFileVersionUpInfo(fileKey, isVersionUp)); } break; default: break; } } ConvertFileList.EditorVersionUp(keyFiles, customFileVersionUpInfoList); Debug.Log(string.Format("{0}/{1}files version up", versionUpCount, convertFileCount)); }
void InitSub(string path, AssetFileManagerSettings settings, ConvertFileListManager convertFileListManager) { InitKey(path); this.filePath = Key; //ファイル設定を取得 this.setting = settings.FindSettingFromPath(FilePath); if (FileType == AssetFileType.Csv && FilePathUtil.CheckExtentionWithOutDouble(FilePath, ExtensionUtil.TSV, ExtensionUtil.UtageFile)) { loadFlags |= AssetFileLoadFlags.Tsv; } //保存場所の設定 this.strageType = ParseStrageType(); //コンバートファイル情報を設定 if (convertFileListManager.IsInitialized) { SetConvertFileInfo(convertFileListManager); } }
public StaticAssetFile(StaticAsset asset, string filePath, AssetFileSetting setting, StringGridRow rowData) : base(filePath, setting, rowData) { this.Asset = asset; TextAsset textAsset = Asset.Asset as TextAsset; if (null != textAsset) { Text = textAsset.text; Bytes = textAsset.bytes; bool isTsv = (LoadFlags & AssetFileLoadFlags.Tsv) != AssetFileLoadFlags.None; Csv = new StringGrid(FileName, isTsv ? CsvType.Tsv : CsvType.Csv, textAsset.text); } this.Sprite = Asset.Asset as Sprite; this.Texture = Asset.Asset as Texture2D; this.Sound = Asset.Asset as AudioClip; this.UnityObject = Asset.Asset; this.IsLoadEndOriginal = true; }
//宴独自形式へのコンバート bool TryConvertToUtageFile(MainAssetInfo asset, string inputDir, bool isOnlyNew) { string outputFileName = ToOutPutFilePath(asset.AssetPath, inputDir); AssetFileSetting setting = Settings.FindSettingFromPath(outputFileName); if (setting.EncodeType == AssetFileEncodeType.AlreadyEncoded) { outputFileName += ExtensionUtil.UtageFile; } //新しいファイルのみコピー if (isOnlyNew) { if (File.Exists(outputFileName) && File.GetLastWriteTime(asset.FullPath) <= File.GetLastWriteTime(outputFileName)) { return(false); } } return(TryConvertFileFromMem(outputFileName, File.ReadAllBytes(asset.FullPath))); }
//指定のパスのファイルをメモリからバージョンアップ。 //ファイルとメモリが同じだったら、書き込まずfalseを返す。 bool TryConvertFileFromMem(string outputFileName, byte[] buffer) { AssetFileSetting setting = Settings.FindSettingFromPath(outputFileName); byte[] oldBytes = File.Exists(outputFileName) ? File.ReadAllBytes(outputFileName) : new byte[0]; if (setting.EncodeType == AssetFileEncodeType.AlreadyEncoded) { //エンコードが必要なタイプはエンコードする switch (setting.FileType) { case AssetFileType.Sound: Debug.LogError("Sound File not support to encode file"); return(false); case AssetFileType.Texture: buffer = FileIOManager.EncodeNoCompress(buffer); break; default: buffer = FileIOManager.Encode(buffer); break; } } if (IsEqualBytes(oldBytes, buffer)) { return(false); } else { //ディレクトリがなければ作る string dir = Path.GetDirectoryName(outputFileName); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } File.WriteAllBytes(outputFileName, buffer); return(true); } }