AssetBundle

转自:http://blog.csdn.net/poda_/article/details/50038117
 
AssetBundle  打包
using UnityEngine; 
using System.Collections; 
using UnityEditor; 
/// <summary> 
/// 脚本位置:Editor文件夹下 
/// 脚本功能:打包 
/// </summary> 
public class CreateAssetBundle:Editor 
{ 
//打包预制体 
[MenuItem ("Assets/Build AssetBundle poda")] 
static void BuildAssetsBundles () 
{ 
BuildPipeline.BuildAssetBundles (Application.dataPath + "/AssetBundles"); 
} 

// 打包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(); 

} 

}

AssetBundle  解包
using UnityEngine;  
using System.Collections;  
/// <summary>  
/// 脚本位置:需要加载物体的场景中任意物体上  
/// 脚本功能:加载物体  
/// </summary>  
public class LoadAssetBundle : MonoBehaviour  
{  
          
    private string url;  
    private string assetname;  
  
    void Start ()  
    {  
        url = "file://" + Application.dataPath + "/AssetBundles/player1.assetbundle";  
  
        // unity预制体名字  
        assetname = "poda";  
  
        StartCoroutine (Download ());  
    }  
  
    IEnumerator Download ()  
    {  
  
        WWW www = new WWW (url);  
        yield return www;  
        if (www.error != null) {  
            Debug.Log ("下载失败");  
  
        } else {  
            AssetBundle bundle = www.assetBundle;  
  
            // 加载的是预设体的名字,不是打包的assetbundle的名字  
            Object obj = bundle.LoadAsset (assetname);  
            Instantiate (obj,Vector3.zero,Quaternion.identity);  
                   
                // AssetBundle.Unload(false),释放AssetBundle文件内存镜像,不销毁Load创建的Assets对象  
                        // AssetBundle.Unload(true),释放AssetBundle文件内存镜像同时销毁所有已经Load的Assets内存镜像  
                        bundle.Unload (false);  
        }  
  
        // 中断正在加载过程中的WWW  
        www.Dispose ();  
    }  
  
  
}  


解压场景

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 ();  
    }  
  
}  



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值