Asset Bundle

来源:互联网 发布:电脑看电视软件收台多 编辑:程序博客网 时间:2024/04/19 16:58
using UnityEngine;using System.Collections;using UnityEditor;/// <summary>/// 脚本位置:Editor文件夹下/// 脚本功能:打包/// </summary>public class CreateAssetBundle:Editor{    // 打包unity场景文件    [MenuItem("Assets/Build AssetBundle Scene")]    static void MyBuild(){        // 需要打包的场景名字        string [] levels =  {"Assets/2.unity"};        // 注意这里【区别】通常我们打包,第2个参数都是指定文件夹目录,在此方法中,此参数表示具体【打包后文件的名字】        // 记得指定目标平台,不同平台的打包文件是不可以通用的。最后的BuildOptions要选择流格式        BuildPipeline.BuildPlayer(levels, Application.dataPath+"/Scene.unity3d", BuildTarget.Android, BuildOptions.BuildAdditionalStreamedScenes);        // 刷新,可以直接在Unity工程中看见打包后的文件        AssetDatabase.Refresh();            }}

using UnityEngine;using System.Collections;/// <summary>/// 脚本位置:需要加载物体的场景中任意物体上/// 脚本功能:加载物体/// </summary>public class LoadAssetBundle : MonoBehaviour{            private string url;    private string assetname;    void Start ()    {        // 下载压缩包,写出具体的名字        url = "file://" + Application.dataPath + "/Scene.unity3d";        // unity预制体名字,即被打包的场景名字叫 2        assetname = "2";        StartCoroutine (Download ());    }    IEnumerator Download ()    {        WWW www = new WWW (url);        yield return www;        if (www.error != null) {            Debug.Log ("下载失败");        } else {            AssetBundle bundle = www.assetBundle;            Application.LoadLevel ("2");            print ("跳转场景");            // AssetBundle.Unload(false),释放AssetBundle文件内存镜像,不销毁Load创建的Assets对象            // AssetBundle.Unload(true),释放AssetBundle文件内存镜像同时销毁所有已经Load的Assets内存镜像            bundle.Unload (false);        }        // 中断正在加载过程中的WWW        www.Dispose ();    }}
    public string path;    public string file;    void Start()    {        StartCoroutine("Load");    }    IEnumerator Load()    {        string _path = "file:///" + Application.dataPath + "/" + path;        WWW www = WWW.LoadFromCacheOrDownload(_path, 1);        yield return www;        AssetBundle ab = www.assetBundle;        AssetBundleRequest request = ab.LoadAssetAsync(file);        yield return request;        GameObject prefab = request.asset as GameObject;        Instantiate(prefab, Vector3.zero, Quaternion.identity);        //clean        ab.Unload(false);        www.Dispose();    }

0 0
原创粉丝点击