首先,是如何打包AB包。首先编写AssetBulider脚本,注意需要引用UnityEditor。将这个编辑器脚本放到Asset/Editor文件夹中
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
public class AssetBuilder : MonoBehaviour {
[MenuItem("Assets/Get AssetBundle names")]
static void GetAssetBundleNames(){//获取所有AB名称
var names = AssetDatabase.GetAllAssetBundleNames();
foreach (var name in names)
{
Debug.Log("AB:"+name);//显示全部AB包名称
}
}
// Use this for initialization
[MenuItem("Assets/Build Asset Bundles")]
static void BulidAssets(){
BuildPipeline.BuildAssetBundles("Assets/Bundles/Win",BuildAssetBundleOptions.None,BuildTarget.StandaloneWindows);
}
}
接下来是将AB包上传到服务器或阿里云OSS中 复制资源的URL
LoadAssetBundle脚本是如何加载AB包
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class LoadAssetsBundles : MonoBehaviour {
// Use this for initialization
public Image img;
void Start () {
}
public void LoadAB(){
StartCoroutine(StartLoad());
}
// Update is called once per frame
void Update () {
}
IEnumerator StartLoad(){
while(!Caching.ready)
yield return null;
int version = 1;
WWW www = WWW.LoadFromCacheOrDownload("阿里云的链接",version);
yield return www;
AssetBundle bundle = www.assetBundle;
print("准备加载网络资源");
var prefab = bundle.LoadAsset("NSSUI");
GameObject go = (GameObject)Instantiate(prefab);
print("加载完毕");
bundle.Unload(false);
www.Dispose();
}
}