原教程地址
1.加载AssetBundle资源
1.标记资源
右键->@ResKit- AssetBundle Mark
2.加载资源
2.1 同步加载
mResLoader.LoadSync<GameObject> ("资源名不是AssetBundle 名","可选包名").Instantiate ()
2.2 异步加载
// 添加到加载队列
mResLoader.Add2Load("TestObj",(succeed,res)=>{
if (succeed)
{
res.Asset.As<GameObject>().Instantiate();
}
});
// 执行异步加载
mResLoader.LoadAsync();
2.3 同时异步加载多个资源
// 添加一个资源
mResLoader.Add2Load("TestObj",(succeed,res)=>{
if (succeed)
{
res.Asset.As<GameObject>().Instantiate();
}
});
// 加载一个资源,不处理
mResLoader.Add2Load("TestObj1",(succeed,res)=>{});
// 加载一个列表中的资源
mResLoader.Add2Load(new List<string>(){ "TestObj2","TestObj3","TestObj4"});
// 执行加载操作
mResLoader.LoadAsync(()=>{
// 可以监听所有的资源是否加载成功
"资源加载成功".LogInfo();
});
2.4 加载Sprite
var sprite = mResLoader.LoadSprite ("TestSprite");
var spriteRenderer = GetComponent<SpriteRenderer>();
spriteRenderer.sprite = sprite;
- 确保 Unity 的 Editor 设置里支持了 Legacy Sprite Packager
- Res Kit 中推荐使用 LoadSprite 加载 Sprite 类型
- 非模拟模式下:精灵图片必须要输入 Packing Tag(打图集)
4.这是 Unity AssetBundle 的坑,不是 Res Kit 的坑
2.从 Resources 中加载资源
var sprite = mResLoader.LoadSprite ("resources://TestSprite");
var spriteRenderer = GetComponent<SpriteRenderer>();
spriteRenderer.sprite = sprite;
3.从网络中加载资源
var imageUrl = "http://file.liangxiegame.com/296b0166-bdea-47d5-ac87-4b55c91df16f.png";
mResLoader.Add2Load ("netimage:" + imageUrl,(succeed,res) => {
if (succeed)
{
var spriteRenderer = GetComponent<SpriteRenderer>();
var texture2D = res.Asset as Texture2D;
var sprite = Sprite.Create(texture2D,new Rect(0,0,texture2D.width,texture2D.height),Vector2.one * 0.5f);
spriteRenderer.sprite = sprite;
}
});
mResLoader.LoadAsync();
4.从本地加载资源
从本地加载资源,实际上是从 Application.persistentDataPath 中加载资源。 使用方式很简单,只需要加上 localimage: 前缀即可。
5.代码生成
6.场景加载
一个场景标记为一个 AssetBundle
场景的加载不支持 Simulation Mode,所以在开发阶段可以把场景放到 Resources 目录下,然后用 ResLoaer 加上 resources:// 前缀加载资源,等到发布的时候,再把 场景做成 AssetBundle。
mResLoader.LoadSync("SceneRes");
SceneManager.LoadScene("SceneRes");
7.自定义扩展Res
8.小结
同步加载资源 ResLoader.LoadSync
异步加载资源 ResLoader.Add2Load + LoadAsync
加载 AB 资源:
- ResLoader.LoadSync(assetName)
- ResLoader.LoadSync(abName,assetName)
- 支持异步(LoadAsync)
加载 Resources 资源:
- ResLoader.LoadSync("resources://" + assetPath);
- 支持异步(LoadAsync)
加载网络图片
ResLoader.Add2Load("netimage:" + imageUrl,(succeed,res)=>{});
开发阶段建议使用 模拟模式
真机阶段建议使用 非模拟模式
模拟模式 资源工作流
- 标记 AB
- 代码加载
非模拟模式 资源工作流
- 标记 AB(不推荐在非模拟模式下添加资源,建议在开发阶段添加资源)
- 打AB包
- 代码加载