资源加载
我在 ui 文件下放了个 1.png 图片, (文件夹名称任意)
鼠标右键 1.png ,点击 UniWb-ABMark , 则代表标记该资源,
然后,勾选 Simulation Mode , 注意此时我们并没有打 AB 包
在 Canvas 新建 Image
代码中调用
public class NewBehaviourScript2 : MonoBehaviour
{
public Image image = null;
void Start()
{
ResLoader loader = ResLoader.Allocate();
image.sprite = loader.LoadSprite("1");
}
}
如果你标记的为预制体,使用大同小异
GameObject.Instantiate(loader.LoadSync<GameObject>("Cube"));
异步加载
public class NewBehaviourScript2 : MonoBehaviour
{
public Image image = null;
void Start()
{
ResLoader loader = ResLoader.Allocate();
//image.sprite = loader.LoadSprite("1");
loader.AddToLoad("1", (succeed, res) =>
{
if (succeed)
{
var texture2D = res.Asset as Texture2D;
var sprite = Sprite.Create(texture2D, new Rect(0, 0, texture2D.width, texture2D.height), Vector2.one * 0.5f);
image.sprite = sprite;
}
});
loader.LoadAsync();
}
}
异步加载网络图片 和本地图片
var imageUrl = "http://img.netbian.com/file/2017/0512/312be0e5cae93d373d362d589f434215.jpg";
loader.AddToLoad("netimage:" + imageUrl, (succeed, res) =>
{
if (succeed)
{
var texture2D = res.Asset as Texture2D;
var sprite = Sprite.Create(texture2D, new Rect(0, 0, texture2D.width, texture2D.height), Vector2.one * 0.5f);
image.sprite = sprite;
}
});
loader.AddToLoad(@"localimage:C:\Users\Administrator\Desktop\ass.png", (succeed, res) =>
{
if (succeed)
{
var texture2D = res.Asset as Texture2D;
var sprite = Sprite.Create(texture2D, new Rect(0, 0, texture2D.width, texture2D.height), Vector2.one * 0.5f);
image.sprite = sprite;
}
});
loader.LoadAsync();
资源释放
当不再需要使用 loader 加载过的时候则可以释放它,使用如下。 一般会在 OnDestory 去调用
loader.RecycleToCache();
loader = null;
这样在使用资源的时候无需打AB 包,即可使用资源
打包 AB 包
点击 按钮则会打 AB 包,打包采用增量打包方式,也就是说,会根据标记好的 ab 资源去生成 ab 包,修改过的则覆盖,没修改过的则跳过,多于的资源则删除,提升打包速度。
同时在 StreamingAssets 文件夹下会生成 打好的AB 包,在 Resources 目录下会多出个 asset_bindle_config 二进制文件 (不可随意删除它)
我们此时取消勾选 SimulationMode , 代码无需更改,则直接会用到打好的 AB 包资源。