A .NET library undergoing active refactoring, currently focused on high-performance parsing and reading of Unity Engine asset files.
Only support Unity 2017.x or later.
- Parsing and Reading
- Serialization
-
Patching(Will be re-introduced in a future version) - Calculate/Patch crc32
- Parsing and Reading
- Serialization
-
Patching(Temporarily removed)
- Parsing based on TypeTree
-
Serialization(Temporarily removed) -
Patching(Temporarily removed)
The tests were written with an LLM rather than by hand. They are a regression net rather than a specification: they pin what the code does today, so treat a change in their expectations as something to review rather than to trust.
dotnet test tests/UnityAsset.NET.Tests/UnityAsset.NET.Tests.csprojTo load BundleFile with Unity CN Encryption, there are two ways.
// Hex string format (32 characters)
Setting.DefaultUnityCNKey = "587865636f6472506547616b61326536"; // Represents "XxecodrPeGaka2e6" in hex
BundleFile bf = new BundleFile( @"path to your bundlefile");or
// Plain string format (16 characters)
BundleFile bf = new BundleFile( @"path to your bundlefile", "XxecodrPeGaka2e6");or, per session, so two games with different keys can be loaded at once:
using var session = new AssetManager(options: new UnitySessionOptions { UnityCnKey = "XxecodrPeGaka2e6" });To remove Unity CN Encryption form File, you can simply save BundleFile without key
// Temporarily removed
bf.Serialize(@"path to save file", CompressionType.Lz4HC, CompressionType.Lz4HC);Some BundleFile's version may be stripped, to load those file you can set a specific version
Setting.DefaultUnityVerion = "2020.3.48f1"or per session, which also applies to the serialized files inside a bundle:
using var session = new AssetManager(options: new UnitySessionOptions { DefaultUnityVersion = "2020.3.48f1" });- v0.4: Re-architect and re-implement a robust and flexible serialization API.
- v0.5: Re-introduce patching capabilities based on the new object model.
This project stands on the shoulders of these amazing open-source projects: