Update to v0.19 & update dependencies

This commit is contained in:
VaDiM
2025-09-04 20:04:50 +03:00
parent 7ce8b8c8ae
commit 6de33d0437
15 changed files with 212 additions and 69 deletions

View File

@ -3,7 +3,7 @@
<PropertyGroup>
<TargetFrameworks>net472;net8.0;net8.0-windows;net9.0;net9.0-windows</TargetFrameworks>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<Version>0.18.0.0</Version>
<Version>0.19.0.0</Version>
<Copyright>Copyright © Perfare 2020-2022; Copyright © hozuki 2020</Copyright>
<DebugType>embedded</DebugType>
</PropertyGroup>

View File

@ -2,20 +2,20 @@
<PropertyGroup>
<TargetFrameworks>net472;net8.0;net8.0-windows;net9.0;net9.0-windows</TargetFrameworks>
<Version>0.18.0.0</Version>
<Copyright>Copyright © Perfare 2018-2022; Copyright © aelurum 2023-2024</Copyright>
<Version>0.19.0.0</Version>
<Copyright>Copyright © Perfare 2018-2022; Copyright © aelurum 2021-2025</Copyright>
<DebugType>embedded</DebugType>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ZstdSharp.Port" Version="0.8.1" />
<PackageReference Include="ZstdSharp.Port" Version="0.8.6" />
<PackageReference Include="K4os.Compression.LZ4" Version="1.3.8" />
</ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net472' ">
<PackageReference Include="System.IO.Compression" Version="4.3.0" />
<PackageReference Include="System.Text.Json" Version="9.0.0" />
<PackageReference Include="Microsoft.Bcl.Numerics" Version="9.0.1" />
<PackageReference Include="System.Text.Json" Version="9.0.8" />
<PackageReference Include="Microsoft.Bcl.Numerics" Version="9.0.8" />
<ProjectReference Include="..\AssetStudio.PInvoke\AssetStudio.PInvoke.csproj" />
</ItemGroup>

View File

@ -376,6 +376,7 @@ namespace AssetStudio
SceneRoots = 1660057539,
BrokenPrefabAsset = 1731078267,
AndroidAssetPackImporter = 1736697216,
VulkanDeviceFilterLists = 1740304944,
GridLayout = 1742807556,
AssemblyDefinitionImporter = 1766753193,
ParentConstraint = 1773428102,

View File

@ -5,8 +5,8 @@
<TargetFrameworks>net472;net8.0;net9.0</TargetFrameworks>
<AssemblyTitle>AssetStudioMod by aelurum</AssemblyTitle>
<AssemblyName>AssetStudioModCLI</AssemblyName>
<Version>0.18.0.0</Version>
<Copyright>Copyright © Perfare; Copyright © aelurum 2023-2024</Copyright>
<Version>0.19.0.0</Version>
<Copyright>Copyright © Perfare; Copyright © aelurum 2023-2025</Copyright>
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>embedded</DebugType>
</PropertyGroup>

View File

@ -1,51 +1,57 @@
## AssetStudioModCLI
CLI version of AssetStudioMod.
- Supported asset types for export: `Texture2D`, `Texture2DArray`, `Sprite`, `TextAsset`, `MonoBehaviour`, `Font`, `Shader`, `MovieTexture`, `AudioClip`, `VideoClip`, `Mesh`.
- *There are no plans to add support for `AnimationClip`, `Animator` for now.*
- Supported asset types for export: `Texture2D`, `Texture2DArray`, `Sprite`, `TextAsset`, `MonoBehaviour`, `Font`, `Shader`, `MovieTexture`, `AudioClip`, `VideoClip`, `Mesh`, `Animator`.
### Usage
```
AssetStudioModCLI <input path to asset file/folder> [-m, --mode <value>]
AssetStudioModCLI <input path to asset file(s)/folder> [-m, --mode <value>]
[-t, --asset-type <value(s)>] [-g, --group-option <value>]
[-f, --filename-format <value>] [-o, --output <path>]
[-h, --help] [--log-level <value>]
[--log-output <value>] [--image-format <value>]
[--audio-format <value>] [--l2d-motion-mode <value>]
[--l2d-force-bezier] [--fbx-scale-factor <value>]
[--fbx-bone-size <value>] [--filter-by-name <text>]
[--filter-by-container <text>] [--filter-by-pathid <text>]
[--filter-by-text <text>] [--custom-compression <value>]
[--max-export-tasks <value>] [--export-asset-list <value>]
[--assembly-folder <path>] [--unity-version <text>]
[--not-restore-extension] [--avoid-typetree-loading]
[-r, --overwrite-existing] [-h, --help]
[--log-level <value>] [--log-output <value>]
[--image-format <value>] [--audio-format <value>]
[--l2d-group-option <value>] [--l2d-motion-mode <value>]
[--l2d-search-by-filename] [--l2d-force-bezier]
[--fbx-scale-factor <value>] [--fbx-bone-size <value>]
[--fbx-animation] [--fbx-uvs-as-diffuse]
[--filter-by-name <text>] [--filter-by-container <text>]
[--filter-by-pathid <text>] [--filter-by-text <text>]
[--filter-with-regex] [--blockinfo-comp <value>]
[--block-comp <value>] [--max-export-tasks <value>]
[--export-asset-list <value>] [--assembly-folder <path>]
[--unity-version <text>] [--decompress-to-disk]
[--not-restore-extension] [--ignore-typetree]
[--load-all]
General Options:
-m, --mode <value> Specify working mode
<Value: export(default) | exportRaw | dump | info | live2d | splitObjects>
Export - Exports converted assets
ExportRaw - Exports raw data
Dump - Makes asset dumps
Info - Loads file(s), shows the number of available for export assets and exits
Live2D - Exports Live2D Cubism models
SplitObjects - Exports split objects (fbx)
<Value: extract | export(default) | exportRaw | dump | info | live2d |
splitObjects | animator>
Extract - Extract(Decompress) asset bundles
Export - Convert and export assets
ExportRaw - Export raw assets
Dump - Generate json dumps of loaded asset
Info - Load file(s) and show the number of available for export assets
Live2D - Export Live2D Cubism models
SplitObjects - Export all model objects (split) (fbx)
Animator - Export Animator assets (fbx)
Example: "-m info"
-t, --asset-type <value(s)> Specify asset type(s) to export
<Value(s): tex2d, tex2dArray, sprite, textAsset, monoBehaviour, font, shader
movieTexture, audio, video, mesh | all(default)>
All - export all asset types, which are listed in the values
All - Export all asset types listed in the values
*To specify multiple asset types, write them separated by ',' or ';' without spaces
Examples: "-t sprite" or "-t tex2d,sprite,audio" or "-t tex2d;sprite;font"
-g, --group-option <value> Specify the way in which exported assets should be grouped
<Value: none | type | container(default) | containerFull | filename | sceneHierarchy>
<Value: none | type | container(default) | containerFull | fileName | sceneHierarchy>
None - Do not group exported assets
Type - Group exported assets by type name
Container - Group exported assets by container path
ContainerFull - Group exported assets by full container path (e.g. with prefab name)
SceneHierarchy - Group exported assets by their node path in scene hierarchy
Filename - Group exported assets by source file name
FileName - Group exported assets by source file name
Example: "-g containerFull"
-f, --filename-format <value> Specify the file name format for exported assets
@ -58,6 +64,8 @@ General Options:
-o, --output <path> Specify path to the output folder
If path isn't specified, 'ASExport' folder will be created in the program's work folder
-r, --overwrite-existing (Flag) If specified, Studio will overwrite existing files during asset export/dump
-h, --help Display help and exit
Logger Options:
@ -77,10 +85,17 @@ Convert Options:
--audio-format <value> Specify the format for converting FMOD audio assets
<Value: none | wav(default)>
None - Do not convert fmod audios and export them in their own format
None - Do not convert FMOD audios and export them in their own format
Example: "--audio-format wav"
Live2D Options:
--l2d-group-option <value> Specify the way in which exported models should be grouped
<Value: container(default) | fileName | modelName>
Container - Group exported models by container path
FileName - Group exported models by source file name
ModelName - Group exported models by model name
Example: "--l2d-group-option modelName"
--l2d-motion-mode <value> Specify Live2D motion export mode
<Value: monoBehaviour(default) | animationClip>
MonoBehaviour - Try to export motions from MonoBehaviour Fade motions
@ -88,6 +103,11 @@ Live2D Options:
AnimationClip - Try to export motions using AnimationClip assets
Example: "--l2d-motion-mode animationClip"
--l2d-search-by-filename (Flag) If specified, Studio will search for model-related Live2D assets by file name
rather than by container
(Preferred option if all l2d assets of a single model are stored in a single file
or containers are obfuscated)
--l2d-force-bezier (Flag) If specified, Linear motion segments will be calculated as Bezier segments
(May help if the exported motions look jerky/not smooth enough)
@ -100,12 +120,23 @@ FBX Options:
<Value: integer number from 0 to 100 (default=10)>
Example: "--fbx-bone-size 10"
--fbx-animation Specify the FBX animation export mode
<Value: auto(default) | skip | all>
Auto - Search for model-related animations and export model with them
Skip - Don't export animations
All - Try to bind all loaded animations to each loaded model
Example: "--fbx-animation skip"
--fbx-uvs-as-diffuse (Flag) If specified, Studio will export all UVs as Diffuse maps.
Can be useful if you cannot find some UVs after exporting (e.g. in Blender)
(But can also cause some bugs with UVs)
Filter Options:
--filter-by-name <text> Specify the name by which assets should be filtered
--filter-by-name <text> Specify the name or regexp by which assets should be filtered
*To specify multiple names write them separated by ',' or ';' without spaces
Example: "--filter-by-name char" or "--filter-by-name char,bg"
--filter-by-container <text> Specify the container by which assets should be filtered
--filter-by-container <text> Specify the container or regexp by which assets should be filtered
*To specify multiple containers write them separated by ',' or ';' without spaces
Example: "--filter-by-container arts" or "--filter-by-container arts,icons"
@ -113,18 +144,32 @@ Filter Options:
*To specify multiple PathIDs write them separated by ',' or ';' without spaces
Example: "--filter-by-pathid 7238605633795851352,-2430306240205277265"
--filter-by-text <text> Specify the text by which assets should be filtered
--filter-by-text <text> Specify the text or regexp by which assets should be filtered
Looks for assets that contain the specified text in their names or containers
*To specify multiple values write them separated by ',' or ';' without spaces
Example: "--filter-by-text portrait" or "--filter-by-text portrait,art"
--filter-with-regex (Flag) If specified, the filter options will handle the specified text
as a regular expression (doesn't apply to --filter-by-pathid)
Advanced Options:
--custom-compression <value> Specify the compression type for assets that use custom compression
<Value: zstd(default) | lz4>
--blockinfo-comp <value> Specify the compression type of bundle's blockInfo data
<Value: auto(default) | zstd | oodle | lz4 | lzma>
Auto - Use compression type specified in an asset bundle
Zstd - Try to decompress as zstd archive
Lz4 - Try to decompress as lz4 archive
Example: "--custom-compression lz4"
Oodle - Try to decompress as oodle archive
Lz4 - Try to decompress as lz4/lz4hc archive
Lzma - Try to decompress as lzma archive
Example: "--blockinfo-comp lz4"
--block-comp <value> Specify the compression type of bundle's block data
<Value: auto(default) | zstd | oodle | lz4 | lzma>
Auto - Use compression type specified in an asset bundle
Zstd - Try to decompress as zstd archive
Oodle - Try to decompress as oodle archive
Lz4 - Try to decompress as lz4/lz4hc archive
Lzma - Try to decompress as lzma archive
Example: "--block-comp zstd"
--max-export-tasks <value> Specify the number of parallel tasks for asset export
<Value: integer number from 1 to max number of cores (default=max)>
@ -141,12 +186,15 @@ Advanced Options:
--unity-version <text> Specify Unity version
Example: "--unity-version 2017.4.39f1"
--not-restore-extension (Flag) If specified, AssetStudio will not try to use/restore original TextAsset
extension name, and will just export all TextAssets with the ".txt" extension
--decompress-to-disk (Flag) If not specified, only bundles larger than 2GB will be decompressed to disk
instead of RAM
--avoid-typetree-loading (Flag) If specified, AssetStudio will not try to parse assets at load time
--not-restore-extension (Flag) If specified, Studio will not try to use/restore original TextAsset extension,
and will just export all TextAssets with the ".txt" extension
--ignore-typetree (Flag) If specified, Studio will not try to parse assets at load time
using their type tree
--load-all (Flag) If specified, AssetStudio will load assets of all types
--load-all (Flag) If specified, Studio will load assets of all types
(Only for Dump, Info and ExportRaw modes)
```

View File

@ -3,7 +3,7 @@
<PropertyGroup>
<TargetFrameworks>net472;net8.0;net8.0-windows;net9.0;net9.0-windows</TargetFrameworks>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<Version>0.18.0.0</Version>
<Version>0.19.0.0</Version>
<Copyright>Copyright © Perfare 2018-2022; Copyright © hozuki 2020</Copyright>
<DebugType>embedded</DebugType>
</PropertyGroup>

View File

@ -165,7 +165,7 @@
this.tableLayoutPanel2.ColumnCount = 3;
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 41.37931F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 58.62069F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 113F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 114F));
this.tableLayoutPanel2.Controls.Add(this.label16, 0, 0);
this.tableLayoutPanel2.Controls.Add(this.label17, 1, 0);
this.tableLayoutPanel2.Controls.Add(this.gitPerfareLinkLabel, 2, 0);
@ -232,7 +232,7 @@
this.label19.Name = "label19";
this.label19.Size = new System.Drawing.Size(113, 13);
this.label19.TabIndex = 13;
this.label19.Text = "aelurum (c) 2021-2024";
this.label19.Text = "aelurum (c) 2021-2025";
//
// gitAelurumLinkLabel
//
@ -253,7 +253,7 @@
this.tableLayoutPanel1.ColumnCount = 3;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 41.37931F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 58.62069F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 113F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 114F));
this.tableLayoutPanel1.Controls.Add(this.label5, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.productNamelabel, 1, 0);
this.tableLayoutPanel1.Controls.Add(this.label7, 0, 1);

View File

@ -7,8 +7,8 @@
<ApplicationIcon>Resources\as.ico</ApplicationIcon>
<AssemblyTitle>AssetStudioMod by aelurum</AssemblyTitle>
<AssemblyName>AssetStudioModGUI</AssemblyName>
<Version>0.18.0.0</Version>
<Copyright>Copyright © Perfare 2018-2022; Copyright © aelurum 2021-2024</Copyright>
<Version>0.19.0.0</Version>
<Copyright>Copyright © Perfare 2018-2022; Copyright © aelurum 2021-2025</Copyright>
<DebugType>embedded</DebugType>
</PropertyGroup>
@ -54,14 +54,14 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft-WindowsAPICodePack-Core-6.0" Version="1.1.6" />
<PackageReference Include="Microsoft-WindowsAPICodePack-Shell-6.0" Version="1.1.6" />
<PackageReference Include="Microsoft-WindowsAPICodePack-Core-6.0" Version="1.1.7" />
<PackageReference Include="Microsoft-WindowsAPICodePack-Shell-6.0" Version="1.1.7" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' != 'net472' ">
<PackageReference Include="OpenTK.Graphics" Version="4.8.2" />
<PackageReference Include="OpenTK.Windowing.Desktop" Version="4.8.2" />
<PackageReference Include="OpenTK.Graphics" Version="4.9.4" />
<PackageReference Include="OpenTK.Windowing.Desktop" Version="4.9.4" />
<Reference Include="OpenTK.WinForms">
<HintPath>Libraries\OpenTK.WinForms.dll</HintPath>
</Reference>

View File

@ -3110,7 +3110,11 @@ namespace AssetStudioGUI
GL.UniformMatrix4(uniformModelMatrix, false, ref modelMatrixData);
GL.UniformMatrix4(uniformViewMatrix, false, ref viewMatrixData);
GL.UniformMatrix4(uniformProjMatrix, false, ref projMatrixData);
#if NETFRAMEWORK
GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill);
#else
GL.PolygonMode(TriangleFace.FrontAndBack, PolygonMode.Fill);
#endif
GL.DrawElements(BeginMode.Triangles, indiceData.Length, DrawElementsType.UnsignedInt, 0);
}
//Wireframe
@ -3122,7 +3126,11 @@ namespace AssetStudioGUI
GL.UniformMatrix4(uniformModelMatrix, false, ref modelMatrixData);
GL.UniformMatrix4(uniformViewMatrix, false, ref viewMatrixData);
GL.UniformMatrix4(uniformProjMatrix, false, ref projMatrixData);
#if NETFRAMEWORK
GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Line);
#else
GL.PolygonMode(TriangleFace.FrontAndBack, PolygonMode.Line);
#endif
GL.DrawElements(BeginMode.Triangles, indiceData.Length, DrawElementsType.UnsignedInt, 0);
GL.Disable(EnableCap.PolygonOffsetLine);
}

View File

@ -2,8 +2,8 @@
<PropertyGroup>
<TargetFrameworks>net472;net8.0;net8.0-windows;net9.0;net9.0-windows</TargetFrameworks>
<Version>0.18.0.0</Version>
<Copyright>Copyright © Perfare 2018-2022; Copyright © aelurum 2023-2024</Copyright>
<Version>0.19.0.0</Version>
<Copyright>Copyright © Perfare 2018-2022; Copyright © aelurum 2021-2025</Copyright>
<DebugType>embedded</DebugType>
</PropertyGroup>
@ -22,7 +22,7 @@
<PackageReference Include="Kyaru.Texture2DDecoder">
<Version>0.17.0</Version>
</PackageReference>
<PackageReference Include="SixLabors.ImageSharp.Drawing" Version="2.1.4" />
<PackageReference Include="SixLabors.ImageSharp.Drawing" Version="2.1.6" />
</ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net472' ">

View File

@ -26,6 +26,7 @@ namespace Unity.SerializationLogic
"BoundsInt",
"Vector3Int",
"Vector2Int",
"RenderingLayerMask",
};
private const string Gradient = "UnityEngine.Gradient";

View File

@ -1,5 +1,83 @@
# Changelog
## v0.19.0.0 [04-09-2025]
#### Breaking Changes
- Many asset fields of array type have been replaced with list type *(aka fixed the cause of most memory leaks)* ([35b2499](https://github.com/aelurum/AssetStudio/commit/35b24990c6a5d99c15b661578cf9da26aefe8d1b))
#### New features
- Added Unity 6 support
- Added support for Tuanjie 1.0 - 1.6 (partial)
- Support for some Tuanjie-specific features, such as web streaming of texture data/virtual geometry meshes/acl clips, is not implemented yet
- Added multiBundle support (a single file with multiple asset bundles inside)
- *Which also includes support for fake headers*
- Added options to control exported UV types
- [GUI] Added option for manual binding of UV map types
- [CLI] Added flag to export all UVs as diffuse maps
- [GUI] Added Dark mode support for .NET 9 (wip) (https://github.com/aelurum/AssetStudio/issues/9)
- [GUI] Added option to use lazy loading for `Mesh` assets
- [GUI] Added option to use tree view in the Dump tab
- [GUI] Added option to autoplay `AudioClip` assets
- [CLI] Added mode to export `Animator` assets
- Added option to choose animation export mode (`--fbx-animation`)
- [CLI] Added mode to Extract/Decompress asset bundles (https://github.com/aelurum/AssetStudio/issues/62)
- [CLI] Added support for multiple input paths (separated by `,` or `;`)
#### Fixes
- Fixed support for `Mesh` assets with omitted weight values (https://github.com/aelurum/AssetStudio/issues/21)
- Fixed audio preview for some fmod formats (https://github.com/aelurum/AssetStudio/issues/53)
- Fixed bundle blocks read failed with ArchiveFlags.BlocksInfoAtTheEnd (https://github.com/aelurum/AssetStudio/pull/44)
- Fixed a bug that caused audio preview volume to reset when selecting an asset
- Fixed support of `Sprite` assets from Unity < 5.2
- Fixed support of `Sprite` assets with wrong `SpriteAtlas` pathID
- Fixed parsing of `AnimationClip` assets via typetree for Unity versions < 5
- Fixed calculation of totalPointCount and totalSegmentCount in Live2D motions (https://github.com/Live2D/CubismNativeFramework/pull/57)
- [GUI] Fixed displayed info for non-fmod audio clips from Unity < 5
- [CLI] Fixed `Mesh` export for some region formats (https://github.com/aelurum/AssetStudio/issues/38)
#### Other Changes
- Replaced Newtonsoft.Json with System.Text.Json for asset typetree serialization/deserialization
- Disabled animation converting if animation export is disabled in the options
- Added support for assets/bundles with obfuscated Unity version
- Added support of loading `Material` assets using their typetree
- Added Oodle compression support (unofficial)
- Improved `Animator` export in cases where `MeshRenderer` is missing a `Mesh` reference (https://github.com/aelurum/AssetStudio/pull/40)
- Improved support for some older Unity versions (< 3.0)
- Improved support of zipped files
- Improved ExportRaw option: External data will also be added to exported assets
- Updated UnityCN encryption detection method
- Updated bundle reader
- Replaced creation of a duplicated file/memory stream with OffsetStream
- Added separate processing of uncompressed bundles (including streamed bundles). They will be read directly from disk
- Added progress report on LZMA decompression process
- Updated asset export logic
- Disabled saving files with a unique id if they already exist. A unique id will only be added to files with identical names during export
- Added option to overwrite existing files (`-r`, `--overwrite-existing` flag in CLI)
- Fixed support of multiple model export using "Export selected objects (split)" option (https://github.com/aelurum/AssetStudio/issues/43)
- Improved integration with Live2D assets
- Fixed Live2D model export for bundles with multiple models inside
- Added support of exporting Live2D poses (pose3.json)
- Added support of grouping exported models by model name
- Added container-independent method for searching `AnimationClip` assets
> *However, it's not really universal, so it cannot completely replace the container-dependent method*
- [GUI] Added ability to filter Live2D model assets using "Filter Type"
- [CLI] Added name filtering support for Live2D export mode
- FMOD updated to v2.03.06
- Added native libs for linux-arm64, win-arm64
- [GUI] AudioClip improvements:
- Increased loading speed of `AudioClip` preview
- Optimized memory consumption of `AudioClip` preview
- Fixed incorrect length detection for some sound types
- Added `AudioClip` loop point display (https://github.com/aelurum/AssetStudio/pull/37)
- Added channel count info (audio channels)
- [GUI] Reworked some import options
- Added feature to load and save import options to a file (*import options include Unity version*)
- Added option to always decompress bundles to disk (related issue: https://github.com/aelurum/AssetStudio/issues/58)
- [GUI] Added exact search option for Scene Hierarchy (https://github.com/aelurum/AssetStudio/issues/49)
- [CLI] Added flag to always decompress bundles to disk (`--decompress-to-disk`)
- [CLI] Added flag to allow filtering assets using regex (`--filter-with-regex`) (https://github.com/aelurum/AssetStudio/issues/45)
- [CLI] The `--avoid-typetree-loading` flag replaced with `--ignore-typetree`
- Made some other minor fixes and improvements
## v0.18.0.0 [04-04-2024]
#### Breaking Changes
- Structure of the AnimationClip class has been changed a bit to match the structure of its type tree (`m_Clip = animationClip.m_MuscleClip.m_Clip` -> `m_Clip = animationClip.m_MuscleClip.m_Clip.data`)

View File

@ -2,7 +2,7 @@ MIT License
Copyright (c) 2016 Radu
Copyright (c) 2016-2022 Perfare
Copyright (c) 2021-2024 aelurum
Copyright (c) 2021-2025 aelurum
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -14,8 +14,8 @@
## AssetStudio Features
- Support version:
- 3.4 - 2023.2
- Support Unity version:
- 1.7 - 6000.2
- Support asset types:
- **Texture2D**, **Texture2DArray** : convert to png, tga, jpeg, bmp, webp
- **Sprite** : crop Texture2D to png, tga, jpeg, bmp, webp
@ -32,7 +32,6 @@
## 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 model export
@ -48,12 +47,12 @@
- 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.net8
- GUI/CLI (Windows) - [.NET Desktop Runtime 8.0](https://dotnet.microsoft.com/download/dotnet/8.0)
- CLI (Linux/Mac) - [.NET Runtime 8.0](https://dotnet.microsoft.com/download/dotnet/8.0)
- AssetStudioMod.net9
- GUI/CLI (Windows) - [.NET Desktop Runtime 9.0](https://dotnet.microsoft.com/download/dotnet/9.0)
- CLI (Linux/Mac) - [.NET Runtime 9.0](https://dotnet.microsoft.com/download/dotnet/9.0)
## CLI Usage
@ -97,14 +96,16 @@ AssetStudioModCLI <asset folder path> -m dump -o <output folder path>
```
AssetStudioModCLI <asset folder path> -m live2d
```
> When running in live2d mode you can only specify `-o`, `--log-level`, `--log-output`, `--l2d-motion-mode`, `--l2d-force-bezier`, `--export-asset-list`, `--unity-version` and `--assembly-folder` options.
Any other options will be ignored.
> When running in live2d mode, the only filter option supported is `--filter-by-name`.
- Export all FBX objects (similar to "Export all objects (split)" option in the GUI)
```
AssetStudioModCLI <asset folder path> -m splitObjects
```
> When running in splitObjects mode you can only specify `-o`, `--log-level`, `--log-output`, `--export-asset-list`, `--image-format`, `--filter-by-name` and `--unity-version` options.
Any other options will be ignored.
> When running in splitObjects mode, the only filter option supported is `--filter-by-name`.
- Export Animator assets
```
AssetStudioModCLI <asset folder path> -m animator
```
### Advanced Samples
- Export image assets converted to webp format to a specified output folder
@ -202,3 +203,9 @@ First, use [Il2CppDumper](https://github.com/Perfare/Il2CppDumper) to generate d
* [Ishotihadus/mikunyan](https://github.com/Ishotihadus/mikunyan)
* [BinomialLLC/crunch](https://github.com/BinomialLLC/crunch)
* [Unity-Technologies/crunch](https://github.com/Unity-Technologies/crunch/tree/unity)
### LZMA compression
* [7-zip/sdk](https://www.7-zip.org/sdk.html)
### Oodle compression
* [zao/ooz](https://github.com/zao/ooz)

View File

@ -3,13 +3,13 @@
<PropertyGroup>
<TargetFramework>net472</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<Version>0.18.0.0</Version>
<Version>0.19.0.0</Version>
<Copyright>Copyright © Perfare 2020-2022; Copyright © hozuki 2020</Copyright>
<DebugType>embedded</DebugType>
</PropertyGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net472' ">
<PackageReference Include="System.Memory" Version="4.5.5" />
<PackageReference Include="System.Memory" Version="4.6.3" />
</ItemGroup>
<ItemGroup>