Uniasset¶
High-performance external asset loading for Unity
Built on native Rust libraries, Uniasset brings asynchronous and efficient image and audio loading to Unity projects.
MIT C# + Rust
Why Unity asset loading is painful¶
External asset loading in Unity often runs into the same bottlenecks. Uniasset is designed to remove them.
Slow processing¶
Cropping or resizing textures usually means multiple SetPixels passes, extra copies, and format conversions.
Limited format support¶
Unity does not handle formats like WebP or FLAC well without extra tooling.
Inflexible data sources¶
Loading from network streams, encrypted packages, or custom storage layers is awkward.
Core features¶
Performance first¶
The core is written in Rust and exposed through P/Invoke FFI, making full use of native performance and SIMD-friendly paths.
Async by default¶
Expensive operations expose async/await APIs that fit naturally into Unity coroutines and Tasks without blocking the main thread.
Multi-format images¶
Supports JPEG, WebP, PNG, BMP, TGA, PSD, with built-in cropping and resizing.
Multi-format audio¶
Covers MP3, FLAC, WAV, PCM, Vorbis, OGG, and AAC decoding.
Custom data sources¶
Implement IUniassetStream to load from any source: network streams, encrypted bundles, AssetBundles, or memory caches.
Architecture¶
1
C# SDK
A fully asynchronous C# API layer with high-level abstractions such as ImageAsset and AudioAsset.
2
P/Invoke FFI
A lightweight interop layer that talks directly to native code with no extra serialization overhead.
3
Rust Native Library
A high-performance Rust core responsible for decoding, processing, and memory management across platforms.
Supported formats¶
Code samples¶
Load and process an image
Load and play audio
Integrate in three steps¶
Ready to upgrade your Unity project?¶
Add high-performance, asynchronous, multi-format external asset loading to your game.