Esempio n. 1
0
        //アセットバンドルのリストを取得
        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);
        }
Esempio n. 2
0
 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);
        }
Esempio n. 4
0
        //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();
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        //リソースファイルをバージョンアップ
        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));
        }
Esempio n. 7
0
        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);
            }
        }
Esempio n. 8
0
        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;
        }
Esempio n. 9
0
        //宴独自形式へのコンバート
        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)));
        }
Esempio n. 10
0
        //指定のパスのファイルをメモリからバージョンアップ。
        //ファイルとメモリが同じだったら、書き込まず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);
            }
        }