Unity5版本的AssetBundle打包方案之打包Scene場景


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

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM