Unity AssetBundles打包

首先需要打包一个预制体物体,该预制体需要更改后缀为.unity3d;

using UnityEditor;
using System.Collections;
using UnityEngine;
using System.IO;
using System.Collections.Generic;
        
    public class QABEditor  
    {        
        [MenuItem("QFramework/AB/Build")]      
        public static void BuildAssetBundle()       
        {          

            // AB包输出路径           
            string outPath = Application.streamingAssetsPath + "/QAB";      

            // 检查路径是否存在         
            CheckDirAndCreate (outPath);     

            BuildPipeline.BuildAssetBundles (outPath, 0, EditorUserBuildSettings.activeBuildTarget);    

            // 刚创建的文件夹和目录能马上再Project视窗中出现        

            AssetDatabase.Refresh ();      
        }    

        /// <summary>     
        /// 判断路径是否存在,不存在则创建       
        /// </summary>      
           public static void CheckDirAndCreate(string dirPath)     
         {          
             if (!Directory.Exists (dirPath)) {   
                
                Directory.CreateDirectory (dirPath);  

            }      
        }    

}

读取ab包;
using UnityEngine;
using System.Collections;
using System.IO;

public class  QFramework : MonoBehaviour
{


    public string busUnity;    //ab包的名字  xxx.unity3d
    public string busName;   //生成物体的名字    xxx

    public string tree1Unity;
    public string tree1Name;
  
    void Start()
    {

        StartCoroutine(GameInstanciate(busUnity, busName));

        StartCoroutine(GameInstanciate(tree1Unity, tree1Name));
 
    }

 

    IEnumerator GameInstanciate(string unity, string name)
    {

        WWW www = new WWW("file:///" + Application.streamingAssetsPath + Path.DirectorySeparatorChar + "QAB" + Path.DirectorySeparatorChar + unity);

        yield return www;


        if (string.IsNullOrEmpty(www.error))
        {

            var go = www.assetBundle.LoadAsset<GameObject>(name);
            Debug.Log(go.transform.position);
            Instantiate(go);
           //Instantiate(go).transform.SetParent(GameObject.Find("Tree").transform);
           // Transform obj= Instantiate(go.transform,go.transform.position,Quaternion.identity,GameObject.Find("Tree").transform)as Transform;
            //GameObject obj = Instantiate(go, GameObject.Find("Tree").transform);
           // obj.transform.position = go.transform.position;
           // obj.transform.rotation = go.transform.rotation;
         


        }
        else
        {

            Debug.LogError(www.error);

        }

    }
}



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 111. [动画系统]如何将其他类型的动画转换成关键帧动画? 动画->点缓存->关键帧 112. [动画]Unit...
    胤醚貔貅阅读 14,517评论 3 89
  • 最先执行的方法是: 1、(激活时的初始化代码)Awake,2、Start、3、Update【FixUpdate、L...
    困卡阅读 9,811评论 0 8
  • 更新:【面试题含答案】http://bbs.9ria.com/thread-288394-1-1.html 高频问...
    好怕怕阅读 10,254评论 3 52
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,355评论 19 139
  • 案例一:两个群。 1.群变成广告群,只剩下广告,死群了。 2.群消息成百上千,大量群消息读不完。 用户反应: 群主...
    马克图布了阅读 6,389评论 0 1