unity AssetBundle打包及加载

unity版本2017.3.0

1.以下几个api已经弃用

打包只能用:

2.加载大部分用WWW加载

例子:

打包代码:

#if UNITY_EDITOR  
using UnityEditor;
using UnityEngine;

public class AssetBundleData: MonoBehaviour
{

    [MenuItem("Assets/buildPrefab")]  //在Assets下面显示一个buildPrefab按钮用来打包
static void AssetBundleGameObject() { string path = Application.dataPath + "/AssetBundle"; BuildPipeline.BuildAssetBundles(path,BuildAssetBundleOptions.None,BuildTarget.StandaloneWindows64); AssetDatabase.Refresh(); //刷新unity中的资源 } } #endif

加载:

using System.Collections;
using UnityEngine;

public class GameManager : MonoBehaviour {

    IEnumerator InstanceGameObj() //加载游戏物体
    {
        string path =Application.dataPath+ "/AssetBundle/cube.prefab";
        WWW wWW = new WWW(path);
        yield return wWW;
       if(string.IsNullOrEmpty(wWW.error))
        {
            AssetBundle assetBuild =wWW.assetBundle;
            GameObject[] obj = assetBuild.LoadAllAssets<GameObject>();
            Instantiate(obj[0]);
            foreach (GameObject item in obj)
            {
                Debug.Log(item.name);
               // Instantiate(item);
            }
        }
       else
       {
            Debug.Log(wWW.error);
       }
       yield return null;
    }
    IEnumerator InstanceScene()//加载游戏场景
    {
        string path = Application.dataPath + "/AssetBundle/loadscene.scene";
        WWW wWW = new WWW(path);
        yield return wWW;
        if(string.IsNullOrEmpty(wWW.error))
        {
            AssetBundle ab = wWW.assetBundle;  //将场景存入缓存区
            UnityEngine.SceneManagement.SceneManager.LoadScene("Load"); //加载场景
        }
        yield return null;

    }
}

 

posted @ 2018-04-10 20:58  游戏鼻祖  阅读(1201)  评论(0编辑  收藏  举报