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