diff --git a/AssetStudioCLI/Options/CLIOptions.cs b/AssetStudioCLI/Options/CLIOptions.cs index 00f98143..a6c5b6d4 100644 --- a/AssetStudioCLI/Options/CLIOptions.cs +++ b/AssetStudioCLI/Options/CLIOptions.cs @@ -137,7 +137,7 @@ private void InitOptions() "Export - Exports converted assets\n" + "ExportRaw - Exports raw data\n" + "Dump - Makes asset dumps\n" + - "Info - Loads file(s), shows the number of supported for export assets and exits\n" + + "Info - Loads file(s), shows the number of available for export assets and exits\n" + "Live2D - Exports Live2D Cubism 3 models\n" + "Example: \"-m info\"\n", optionHelpGroup: HelpGroups.General @@ -151,7 +151,7 @@ private void InitOptions() "audio, video, mesh | all(default)>\n" + "All - export all asset types, which are listed in the values\n" + "*To specify multiple asset types, write them separated by ',' or ';' without spaces\n" + - "Examples: \"-t sprite\" or \"-t all\" or \"-t tex2d,sprite,audio\" or \"-t tex2d;sprite;font\"\n", + "Examples: \"-t sprite\" or \"-t tex2d,sprite,audio\" or \"-t tex2d;sprite;font\"\n", optionHelpGroup: HelpGroups.General ); o_groupAssetsBy = new GroupedOption diff --git a/AssetStudioCLI/ReadMe.md b/AssetStudioCLI/ReadMe.md index 54770008..1f27b912 100644 --- a/AssetStudioCLI/ReadMe.md +++ b/AssetStudioCLI/ReadMe.md @@ -1,11 +1,11 @@ -## AssetStudioCLI +## AssetStudioModCLI CLI version of AssetStudioMod. - Supported asset types: `Texture2D`, `Sprite`, `TextAsset`, `MonoBehaviour`, `Font`, `Shader`, `MovieTexture`, `AudioClip`, `VideoClip`, `Mesh`. - *There are no plans to add support for `AnimationClip`, `Animator` for now.* ### Usage ``` -AssetStudioCLI [-m, --mode ] +AssetStudioModCLI [-m, --mode ] [-t, --asset-type ] [-g, --group-option ] [-o, --output ] [-h, --help] [--log-level ] [--log-output ] @@ -16,14 +16,13 @@ AssetStudioCLI [-m, --mode ] [--unity-version ] [--not-restore-extension] - General Options: -m, --mode Specify working mode Export - Exports converted assets ExportRaw - Exports raw data Dump - Makes asset dumps - Info - Loads file(s), shows the number of supported for export assets and exits + Info - Loads file(s), shows the number of available for export assets and exits Live2D - Exports Live2D Cubism 3 models Example: "-m info" @@ -32,7 +31,7 @@ General Options: audio, video, mesh | all(default)> All - export all asset types, which are listed in the values *To specify multiple asset types, write them separated by ',' or ';' without spaces - Examples: "-t sprite" or "-t all" or "-t tex2d,sprite,audio" or "-t tex2d;sprite;font" + Examples: "-t sprite" or "-t tex2d,sprite,audio" or "-t tex2d;sprite;font" -g, --group-option Specify the way in which exported assets should be grouped diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..a1253312 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,57 @@ +# Changelog + +## v0.17.1.0 [12-07-2023] +#### Breaking Changes +- With the drag&drop fix (https://github.com/aelurum/AssetStudio/commit/2f8f57c1a63893c0b0d2a55349d6cb6d8f8a5a3b), functions `LoadFiles` and `LoadFolder` in AssetsManager have been replaced with one universal function `LoadFilesAndFolders` + +#### Changes +- Fixed Texture2DDecoderNative compatibility issue with Linux/macOS (CLI preparation #1) +- Changed image library to ImageSharp (CLI preparation #2) +- Added support for sprites with alpha mask + - Sprites with alpha mask can now be viewed and exported with transparency + - Added hotkeys to control display of an alpha mask on the preview tab + - Added an option to the export settings to enable/disable export with alpha mask as well + - Prevented texture2D preview options from being changed with hotkeys outside of texture preview (e.g. when some other asset is selected) +- Added image export in WebP format +- Updated FMOD to 0.2.0.22 (CLI preparation #3) +- Added progress info about zip(apk) file loading process +- Added CLI version +- [GUI] Added context menu with "Select all", "Clear selection", "Expand all" and "Collapse all" options to the "Scene Hierarchy" tab + - Selected objects count is now displayed in the status bar +- [GUI] Improved error handling +- [CLI] Added support for partial assets reading +- [GUI] Added some videoClip info to preview tab +- [GUI] Improved memory usage of image previews +- Disabled Shader support for Unity > 2020 +- Added error message for bundles with UnityCN encryption +- Added error message on incorrect format of specified Unity version +- Block alignment fix for Unity 2019.4.X (source: https://github.com/K0lb3/UnityPy/commit/10346b4f02f2dbe0fa707799130c9f83c24f8e24) +- [GUI] Added "About" window +- Fixed cutout glitch in some packed sprites (https://github.com/Perfare/AssetStudio/issues/1015) +- Optimized drawing performance of packed sprites +- [GUI] Improved asset list filtering + - Added filter history + - Added more filtering modes: Include, Exclude, Regex (Name/Container) +- Added grouping option with full container path (https://github.com/Perfare/AssetStudio/issues/815) + - [GUI] - "container path full (with name)" + - [CLI] - "containerFull" +- Improved "Restore TextAsset extension name" option + - If checked, AssetStudio will first try to find an extension in an asset's name and only then in its container. If no extension is found, ".txt" will be used +- [GUI] Fixed audio player position in maximized window +- [GUI] Improved file and folder loading (drag&drop) + - Added support for drag&drop of multiple folders + - Open/Export dialog can now also use a path taken from drag&drop items +- [GUI] Added showing of progress bar in the taskbar button +- Added option to export Live2D Cubism 3 models + +## v0.16.8.1 [25-11-2021] +- Uses System.Drawing lib instead of ImageSharp for process textures +- Added alphanumeric sorting to the column with asset names for more natural presentation of asset list +- Improved "Copy text" option in right click menu, to display what exactly to copy +- Added "Dump selected assets" option to right click menu +- Added 'selected assets count' info to status strip when you select assets +- Added 'exported count / total export count' info to status strip during export +- "Show error message" option on the "Debug" tab has been renamed to "Show all error messages" and is now disabled by default +- "Fixed" an issue with getting stuck during the "Building tree structure" step +- Fixed a bug with listSearch that could make it not work in some conditions +- Fixed a rare bug for resource files with the same name, that caused their data to be overwritten and become incorrect diff --git a/README.md b/README.md index 47425c48..d345c5d5 100644 --- a/README.md +++ b/README.md @@ -1,49 +1,144 @@ -# AssetStudio -[![Build status](https://ci.appveyor.com/api/projects/status/rnu7l90422pdewx4?svg=true)](https://ci.appveyor.com/project/Perfare/assetstudio/branch/master/artifacts) - -**None of the repo, the tool, nor the repo owner is affiliated with, or sponsored or authorized by, Unity Technologies or its affiliates.** - -AssetStudio is a tool for exploring, extracting and exporting assets and assetbundles. - -## Features -* Support version: - * 3.4 - 2022.1 -* Support asset types: - * **Texture2D** : convert to png, tga, jpeg, bmp - * **Sprite** : crop Texture2D to png, tga, jpeg, bmp - * **AudioClip** : mp3, ogg, wav, m4a, fsb. support convert FSB file to WAV(PCM) - * **Font** : ttf, otf - * **Mesh** : obj - * **TextAsset** - * **Shader** - * **MovieTexture** - * **VideoClip** - * **MonoBehaviour** : json - * **Animator** : export to FBX file with bound AnimationClip +# AssetStudioMod -## Requirements +[![Build status](https://ci.appveyor.com/api/projects/status/5qyai0hqs0ktyara/branch/AssetStudioMod?svg=true)](https://ci.appveyor.com/project/aelurum/assetstudiomod/branch/AssetStudioMod) + +**AssetStudioMod** - modified version of Perfare's [AssetStudio](https://github.com/Perfare/AssetStudio), mainly focused on UI optimization and some functionality enhancements. + +**Neither the repository, nor the tool, nor the author of the tool, nor the author of the modification is affiliated with, sponsored, or authorized by Unity Technologies or its affiliates.** + +Since the original repo has been archived, it's worth saying that you shouldn't expect support for newer versions of Unity from this fork. +Unfortunately, I can't continue Perfare's work and keep AssetStudio up to date. + +## Game specific modifications -- AssetStudio.net472 - - [.NET Framework 4.7.2](https://dotnet.microsoft.com/download/dotnet-framework/net472) -- AssetStudio.net5 - - [.NET Desktop Runtime 5.0](https://dotnet.microsoft.com/download/dotnet/5.0) -- AssetStudio.net6 - - [.NET Desktop Runtime 6.0](https://dotnet.microsoft.com/download/dotnet/6.0) +- ArknightsStudio - soon™ +## AssetStudio Features + +- Support version: + - 3.4 - 2022.1 +- Support asset types: + - **Texture2D** : convert to png, tga, jpeg, bmp, webp + - **Sprite** : crop Texture2D to png, tga, jpeg, bmp, webp + - **AudioClip** : mp3, ogg, wav, m4a, fsb. Support converting FSB file to WAV(PCM) + - **Font** : ttf, otf + - **Mesh** : obj + - **TextAsset** + - **Shader** (for Unity < 2021) + - **MovieTexture** + - **VideoClip** + - **MonoBehaviour** : json + - **Animator** : export to FBX file with bound AnimationClip + +## AssetStudioMod Features + +- CLI version (for Windows, Linux, Mac) + - `Animator` and `AnimationClip` assets are not supported in the CLI version +- Support of sprites with alpha mask +- Support of image export in WebP format +- Support of Live2D Cubism 3 model export + - Ported from my fork of Perfare's [UnityLive2DExtractor](https://github.com/aelurum/UnityLive2DExtractor) + - Using the Live2D export in AssetStudio allows you to specify a Unity version and assembly folder if needed +- Detecting bundles with UnityCN encryption + - Detection only. If you want to open them, please use Razmoth's [Studio](https://github.com/RazTools/Studio) +- Some UI optimizations and bug fixes (See [CHANGELOG](https://github.com/aelurum/AssetStudio/blob/AssetStudioMod/CHANGELOG.md) for details) + + +## Requirements -## Usage +- AssetStudioMod.net472 + - GUI/CLI - [.NET Framework 4.7.2](https://dotnet.microsoft.com/download/dotnet-framework/net472) +- AssetStudioMod.net6 + - GUI/CLI (Windows) - [.NET Desktop Runtime 6.0](https://dotnet.microsoft.com/download/dotnet/6.0) + - CLI (Linux/Mac) - [.NET Runtime 6.0](https://dotnet.microsoft.com/download/dotnet/6.0) +- AssetStudioMod.net7 + - GUI/CLI (Windows) - [.NET Desktop Runtime 7.0](https://dotnet.microsoft.com/download/dotnet/7.0) + - CLI (Linux/Mac) - [.NET Runtime 7.0](https://dotnet.microsoft.com/download/dotnet/7.0) + +## CLI Usage + +You can read CLI readme [here](https://github.com/aelurum/AssetStudio/blob/AssetStudioMod/AssetStudioCLI/ReadMe.md). + +### Run + +- Command-line: `AssetStudioModCLI ` +- Command-line for Portable versions (.NET 6+): `dotnet AssetStudioModCLI.dll ` + +### Basic Samples + +- Show a list with a number of assets of each type available for export +``` +AssetStudioModCLI -m info +``` +- Export assets of all supported types +``` +AssetStudioModCLI +``` +- Export assets of specific types +``` +AssetStudioModCLI -t tex2d +``` +``` +AssetStudioModCLI -t tex2d,sprite,audio +``` +- Export assets grouped by type +``` +AssetStudioModCLI -g type +``` +- Export assets to a specified output folder +``` +AssetStudioModCLI -o +``` +- Export Live2D Cubism models +``` +AssetStudioModCLI -m live2d +``` +> When running in live2d mode you can only specify `-o`, `--log-level`, `--log-output`, `--export-asset-list`, `--unity-version` and `--assembly-folder` options. +Any other options will be ignored. + +### Advanced Samples +- Export image assets converted to webp format to a specified output folder +``` +AssetStudioModCLI -o -t sprite,tex2d --image-format webp +``` +- Show the number of audio assets that have "voice" in their names +``` +AssetStudioModCLI -m info -t audio --filter-by-name voice +``` +- Export audio assets that have "voice" in their names +``` +AssetStudioModCLI -t audio --filter-by-name voice +``` +- Export audio assets that have "char" in their names **or** containers +``` +AssetStudioModCLI -t audio --filter-by-text char +``` +- Export audio assets that have "voice" in their names **and** "char" in their containers +``` +AssetStudioModCLI -t audio --filter-by-name voice --filter-by-container char +``` +- Export MonoBehaviour assets that require an assembly folder to read and create a log file +``` +AssetStudioModCLI -t monobehaviour --assembly-folder --log-output both +``` +- Export assets that require to specify a Unity version +``` +AssetStudioModCLI --unity-version 2017.4.39f1 +``` + +## GUI Usage ### Load Assets/AssetBundles -Use **File-Load file** or **File-Load folder**. +Use **File->Load file** or **File->Load folder**. -When AssetStudio loads AssetBundles, it decompresses and reads it directly in memory, which may cause a large amount of memory to be used. You can use **File-Extract file** or **File-Extract folder** to extract AssetBundles to another folder, and then read. +When AssetStudio loads AssetBundles, it decompresses and reads it directly in memory, which may cause a large amount of memory to be used. You can use **File->Extract file** or **File->Extract folder** to extract AssetBundles to another folder, and then read. ### Extract/Decompress AssetBundles -Use **File-Extract file** or **File-Extract folder**. +Use **File->Extract file** or **File->Extract folder**. -### Export Assets +### Export Assets, Live2D models use **Export** menu. @@ -55,9 +150,9 @@ Export Animator from "Asset List" using the **Export** menu. #### With AnimationClip -Select model from "Scene Hierarchy" then select the AnimationClip from "Asset List", using **Model-Export selected objects with AnimationClip** to export. +Select model from "Scene Hierarchy" then select the AnimationClip from "Asset List", using **Model->Export selected objects with AnimationClip** to export. -Export Animator will export bound AnimationClip or use **Ctrl** to select Animator and AnimationClip from "Asset List", using **Export-Export Animator with selected AnimationClip** to export. +Export Animator will export bound AnimationClip or use **Ctrl** to select Animator and AnimationClip from "Asset List", using **Export->Export Animator with selected AnimationClip** to export. ### Export MonoBehaviour @@ -65,7 +160,7 @@ When you select an asset of the MonoBehaviour type for the first time, AssetStud #### For Il2Cpp -First, use my another program [Il2CppDumper](https://github.com/Perfare/Il2CppDumper) to generate dummy dll, then when using AssetStudio to select the assembly directory, select the dummy dll folder. +First, use [Il2CppDumper](https://github.com/Perfare/Il2CppDumper) to generate dummy dll, then when using AssetStudio to select the assembly directory, select the dummy dll folder. ## Build