跳转至

Uniasset

高性能 Unity 外部资源加载插件

基于 Rust 原生库,为 Unity 提供安全、高效、异步的图片与音频加载能力,让资源管理不再拖慢你的项目。

v0.2.0-rc8 MIT C# + Rust


Unity 资源加载的痛点

在 Unity 项目开发中,资源加载常常是性能瓶颈的来源。Uniasset 专为解决这些痛点而生。

原生加载缓慢

UnityWebRequestWWW 在主线程造成卡顿,复杂资源解码耗时严重。

GC 压力大

大量托管内存分配导致频繁 GC 触发,运行时性能波动剧烈。

格式支持有限

Unity 原生支持的音频格式不足,处理 FLAC、AAC、Vorbis 等格式需要额外方案。

缺乏灵活的数据源

无法方便地从网络流、加密包或自定义存储层加载资源。


核心特性

极致性能

底层由 Rust 编写,通过 P/Invoke FFI 直接调用原生代码。零 GC 压力,充分利用系统硬件加速。

异步优先

所有耗时操作均提供 async/await 异步 API,天然适配 Unity 的协程与 Task 体系,告别主线程阻塞。

多格式图片

支持 JPEG、WebP、PNG、BMP、TGA、PSD,内置裁剪、缩放、格式转换、克隆等完整图像处理管线。

多格式音频

覆盖 MP3、FLAC、WAV、PCM、Vorbis、OGG、AAC 七种音频格式,自动识别采样格式与声道布局。

自定义数据源

实现 IUniassetStream 接口,即可从任意来源加载资源 — 网络流、加密包、AssetBundle、内存缓存。

一键集成

下载 Release 中的 uniasset-unity-scripts.zip,再通过编辑器菜单下载并配置原生库。


架构设计

1

C# SDK

完全异步的 C# API 层,提供 ImageAssetAudioAsset 等高级抽象,与 Unity 生态无缝集成。

2

P/Invoke FFI

轻量级跨语言调用层,C# 通过平台调用直接与原生库交互,零中间层、零序列化开销。

3

Rust 原生库

高性能 Rust 核心,负责编解码、数据处理与内存管理。编译为各平台原生二进制,安全且高效。


支持格式

图片

  • JPEG
  • WebP
  • PNG
  • BMP
  • TGA
  • PSD

音频

  • MP3
  • FLAC
  • WAV
  • PCM
  • Vorbis (OGG)
  • AAC

代码示例

加载并处理图片

using Uniasset;
using Uniasset.Image;

using var image = new ImageAsset();
await image.LoadAsync("photo.png");

// 裁剪 & 缩放
await image.CropAsync(0, 0, 256, 256);
await image.ResizeAsync(128, 128);

// 转换为 Texture2D
Texture2D texture = await image.ToTexture2DAsync();

加载并播放音频

using Uniasset;
using Uniasset.Audio;

using var audio = new AudioAsset();
audio.Load("music.mp3");

// 获取音频信息
Debug.Log($"采样率: {audio.SampleRate} Hz");
Debug.Log($"声道数: {audio.ChannelCount}");

// 转换为 AudioClip 播放
AudioClip clip = audio.ToAudioClip();

三步集成

1

安装包

下载 Release 中的 uniasset-unity-scripts.zip,解压到项目目录中。

2

安装原生库

在 Unity Editor 中依次点击以下菜单:

Tools > Uniasset > Download Native Libraries
Tools > Uniasset > Configure Native Libraries

3

开始使用

在脚本顶部添加命名空间引用后,即可开始加载资源:

using Uniasset;
using Uniasset.Image;

using var image = new ImageAsset();
await image.LoadAsync("assets/photo.png");

准备好提升你的 Unity 项目了吗?

为你的项目添加高性能、异步、多格式的资源加载能力。

阅读文档开始使用