一、创建AssetBundle
1、在资源的Inspector视图下有一个AssetBundle的UI,第一个选项表示AssetBundle名称,第二个用于设置AssetBundle Variant,主要用于在不同版本资源的使用和动态替换AssetBundle。
2、在Unity的Assets文件夹下创建Editor文件夹,创建一个C#脚本,用于创建AssetBundle,代码如下:
<span style="color: #0000ff">public <span style="color: #0000ff">class<span style="color: #000000"> TestAssetBundles : MonoBehaviour {
[MenuItem(</span><span style="color: #800000">"</span><span style="color: #800000">Custom Editor/Build AssetBunldes</span><span style="color: #800000">"</span><span style="color: #000000">)]
</span><span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span><span style="color: #000000"> CreateAssetBundlesMain()
{
BuildPipeline.BuildAssetBundles(</span><span style="color: #800000">"</span><span style="color: #800000">Assets/StreamingAssets</span><span style="color: #800000">"</span><span style="color: #000000">,BuildAssetBundleOptions.None,BuildTarget.StandaloneWindows64);
}
}
注:这里的MenuItem是用于在Unity编辑器的菜单上添加一个菜单项。输出路径为Assets下的StreamingAssets文件夹(确保存在)。
3、选择菜单栏中的Custom Editor->Build AssetBundles命令,即可在输出路径中看到打包的AssetBundle。
生成的AssetBundle:
这里的test.assetbundle即是要上传到服务器上下载的AssetBundle文件(如果有依赖关系,还要上传test.assetbundle.manifest文件)。
二、下载AssetBundle并加载
<span style="color: #0000ff">public <span style="color: #0000ff">class<span style="color: #000000"> loadasset : MonoBehaviour {
</span><span style="color: #0000ff">void</span><span style="color: #000000"> Start () {
StartCoroutine(</span><span style="color: #800000">"</span><span style="color: #800000">loadAssetBundle</span><span style="color: #800000">"</span><span style="color: #000000">);
}
IEnumerator loadAssetBundle()
{
</span><span style="color: #0000ff">string</span> assetBundlePath = <span style="color: #800000">"</span><span style="color: #800000">file://</span><span style="color: #800000">"</span> + Application.dataPath + <span style="color: #800000">"</span><span style="color: #800000">/StreamingAssets/test.assetbundle</span><span style="color: #800000">"</span><span style="color: #000000">;
Debug.Log(assetBundlePath);
WWW www </span>= WWW.LoadFromCacheOrDownload(assetBundlePath,<span style="color: #800080">0</span><span style="color: #000000">);
</span><span style="color: #0000ff">yield</span> <span style="color: #0000ff">return</span><span style="color: #000000"> www;
</span><span style="color: #0000ff">if</span> (www.error == <span style="color: #0000ff">null</span><span style="color: #000000">)
{
AssetBundle myLoadAssetBundle </span>=<span style="color: #000000"> www.assetBundle;
AssetBundleRequest request </span>= myLoadAssetBundle.LoadAssetAsync(<span style="color: #800000">"</span><span style="color: #800000">park</span><span style="color: #800000">"</span>,<span style="color: #0000ff">typeof</span><span style="color: #000000"> (GameObject));
</span><span style="color: #0000ff">yield</span> <span style="color: #0000ff">return</span><span style="color: #000000"> request;
GameObject obj </span>= request.asset <span style="color: #0000ff">as</span><span style="color: #000000"> GameObject;
Instantiate(obj);
myLoadAssetBundle.Unload(</span><span style="color: #0000ff">false</span><span style="color: #000000">);
} </span><span style="color: #0000ff">else</span><span style="color: #000000">
{
Debug.Log(www.error);
</span><span style="color: #0000ff">yield</span> <span style="color: #0000ff">return</span> <span style="color: #0000ff">null</span><span style="color: #000000">;
}
}
}
以上便是主要步骤。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。