一、打包场景
//打包AB
[MenuItem("AB/BuildAB")]
static void Build()
{
string outPath = Application.streamingAssetsPath + "/AssetBundle";
if (Directory.Exists(outPath))
Directory.Delete(outPath);
Directory.CreateDirectory(outPath);
BuildPipeline.BuildAssetBundles(outPath, BuildAssetBundleOptions.UncompressedAssetBundle, BuildTarget.StandaloneWindows);
AssetDatabase.Refresh();
}
打包场景命令和打包资源命令是一样的,都是:
BuildPipeline.BuildAssetBundles(outPath, BuildAssetBundleOptions.UncompressedAssetBundle, BuildTarget.StandaloneWindows);
不过有一点需要特别注意:打包场景的时候不要采用压缩格式,要不然加载的时候出不来!!!
二、加载场景
加载场景和加载资源命令是差不多的:
string path = "file://" + Application.streamingAssetsPath + "/AssetBundle/" + sceneName + ".assetBundle";
UnityWebRequest request = UnityWebRequest.Get(path);
yield return request.SendWebRequest();
if (request.error == null)
{
AssetBundle.LoadFromMemory(request.downloadHandler.data);
SceneManager.LoadSceneAsync(sceneName);
}
else
{
Debug.Log(request.error);
}
这里加载场景能与加载资源不一样的是:不需要写下面这行代码:
//AssetBundle ab = AssetBundle.LoadFromMemory(request.downloadHandler.data);
ab.LoadAsset(assetName);
场景就可以出现了。
over!