精华内容
下载资源
问答
  • 引擎版本更新 , ab打包加载方式也在发生变化, 之前的脚本还需要再改改才能继续用 这个没有太多功能 就是简单地打包和加载 ...using UnityEditor; public class CreateAB : Editor { /// <summary>...

    引擎版本更新 , ab打包加载方式也在发生变化, 之前的脚本还需要再改改才能继续用

    这个没有太多功能 就是简单地打包和加载 

    废话不多说  直接上代码 先看打包 编辑器拓展脚本要放Editor 文件夹下

    using UnityEngine;
    using UnityEditor;
    
    public class CreateAB : Editor {
        /// <summary>
        /// 将符合条件的全部分包打包(基本没什么卵用)
        /// </summary>
        [MenuItem("AB工具/单独打包")]
        static void GreatBundle()
        {
            Object[] selects = Selection.objects;
            foreach (Object item in selects)
            {
                Debug.Log(item);
                BuildPipeline.BuildAssetBundles(Application.dataPath + "/", BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);
                AssetDatabase.Refresh();//打包后刷新,不加这行代码的话要手动刷新才可以看得到打包后的Assetbundle包
            }
        }
        /// <summary>
        /// 将选定的多个游戏对象打包一个
        /// </summary>
        [MenuItem("AB工具/整体打包")]
        static void GreatAllBundle()
        {
            AssetBundleBuild[] builds = new AssetBundleBuild[1];
            Object[] selects = Selection.GetFiltered(typeof(Object),SelectionMode.DeepAssets);
            string[] TestAsset = new string[selects.Length];
            for (int i = 0; i < selects.Length; i++)
            {
                TestAsset[i] = AssetDatabase.GetAssetPath(selects[i]);
                Debug.Log(TestAsset[i]);
            }
            builds[0].assetNames = TestAsset;
            builds[0].assetBundleName = selects[0].name;
            BuildPipeline.BuildAssetBundles(Application.dataPath + "/", builds, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);
            AssetDatabase.Refresh();
        }
    }
    

    然后是加载ab 

    using System.Collections;
    using UnityEngine;
    
    public class LoadAB : MonoBehaviour {
    	void Start ()
        {
            ///两种选其一
            StartCoroutine(Load(Application.dataPath + "/cube"));
            //StartCoroutine(LoadA(Application.dataPath + "/cube"));
        }
        IEnumerator Load(string url)
        {
            WWW www = new WWW(url);
            yield return www;
            if (!string.IsNullOrEmpty(www.error)) print(www.error+url);
            else
            {
                GameObject go = Instantiate(www.assetBundle.LoadAsset<GameObject>("cube"));
                www.assetBundle.Unload(false);
            }
        }
        IEnumerator LoadA(string path)
        {
            WWW bundle = WWW.LoadFromCacheOrDownload(path, 5);
            yield return bundle;
            yield return Instantiate(bundle.assetBundle.LoadAsset<GameObject>("cube"));
            bundle.assetBundle.Unload(false);
        }
    }
    

    两种加载的方式都差不多  第一个正常加载  第二种是从缓存中加载 

    有关缓存  想清理的话加一句

     Caching.ClearCache();//清理全部缓存 想具体清理某一个 请参考点击这里看如何删除本地指定的缓存

     

     

    第一个单独打包好像有点问题  先记录下 有时间再改

     

     

     

    展开全文
  • 新版的 Unity 中资源更新有所改变,做个总结,主要参考,留言: https://blog.csdn.net/lmyfx/article/details/78236225 https://blog.csdn.net/elineSea/article/details/79866758 ...

    新版的 Unity 中资源更新有所改变,做个总结,主要参考,留言:

    https://blog.csdn.net/lmyfx/article/details/78236225

    https://blog.csdn.net/elineSea/article/details/79866758

     

    展开全文
  • 打包 using System.IO; using UnityEditor; public class CreateAssetBoudles { //在主页面菜单添加功能键 [MenuItem("Assets/Build AssetBundles")] static void BuildAllAssetBundles() { string d...
    1. 打包
    using System.IO;
    using UnityEditor;
    
    public class CreateAssetBoudles 
    {
        //在主页面菜单添加功能键
        [MenuItem("Assets/Build AssetBundles")]
        static void BuildAllAssetBundles()
        {
            string dir = "AssetBundles";
            if (!Directory .Exists (dir ))
            {
                Directory.CreateDirectory(dir);//没有文件新建文件
            }
            BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);
            //打包代码,参数:文件地址,算法类型,目标使用平台
        }
    }
    
    

    2.加载

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using System.IO;
    using UnityEngine.Networking;
    using System;
    
    public class Load_AssetBundles : MonoBehaviour
    {
        string path = "AssetBundles/scene/wall.unity3d";
    
        void Start()
        {
        //方法一:从文件中加载
            AssetBundle ab1 = AssetBundle.LoadFromFile("AssetBundles/share.unity3d");//依赖包
            AssetBundle ab = AssetBundle.LoadFromFile(path);
            Instantiate(ab.LoadAsset<GameObject>("Cube"));
    
            //Object[] objs = ab.LoadAllAssets();//加载包的所有内容
            //foreach (Object o in objs)
            //{
            //    Instantiate(o);
            //}
       //方法二:从内存中加载
            //AssetBundle ab = AssetBundle.LoadFromMemory(File.ReadAllBytes(path));
            //Object[] objs = ab.LoadAllAssets();
            //foreach (Object o in objs)
            //{
            //    Instantiate(o);
            //}
    
       //利用manifest文件信息加载依赖
            //AssetBundle manifestAB = AssetBundle.LoadFromFile(@"file://D:\unity项目\W0902AssetBundle Learn\AssetBundles/AssetBundles");
            //Debug.Log(1);
            //AssetBundleManifest manifest = manifestAB.LoadAsset<AssetBundleManifest>("AssetBundleManifest");
            //foreach (string item in manifest.GetAllAssetBundles())
            //{
            //    print(item);
            //}
            //string[] strs = manifest.GetAllDependencies("AAAA.unity3d");
            //foreach (string item in strs)
            //{
            //    AssetBundle.LoadFromFile("AssetBundles/" + item);
            //}
            //StartCoroutine(Load());
    
        }
        IEnumerator Load()
        {
            yield return null;
            //异步内存加载AssetBundle
            //AssetBundleCreateRequest request = AssetBundle.LoadFromMemoryAsync(File.ReadAllBytes(path));
            //yield return request;
            //AssetBundle ab = request.assetBundle;
            //Object[] objs = ab.LoadAllAssets();
            //foreach (Object o in objs)
            //{
            //    Instantiate(o);
            //}
            //while (Caching.ready ==false )
            //{
            //    yield return null;
            //}
            
            //方法三:利用WWW此API加载(**将要弃用,不建议使用**)
            //WWW www = WWW.LoadFromCacheOrDownload(@"file://D:\unity项目\W0902AssetBundle Learn\AssetBundles/scene/wall.unity3d", 1);
            //WWW www = WWW.LoadFromCacheOrDownload(@"http://localhost/AssetBundles/scene/wall.unity3d", 1);
    
            //if (!string.IsNullOrEmpty(www.error))
            //{
            //    Debug.Log(www.error);
            //    yield break;
            //}
            //AssetBundle ab = www.assetBundle;
            //string uri = @"http://localhost/AssetBundles/scene/wall.unity3d";
            string  uri = @"file://D:\unity项目\W0902AssetBundle Learn\AssetBundles/scene/wall.unity3d";
            
            //方法四:利用UnityWebRequestAssetBundle此API加载(**UnityWebRequest.GetAssetBundle将弃用请换成UnityWebRequestAssetBundle.GetAssetBundle**)
            UnityWebRequest request = UnityWebRequestAssetBundle.GetAssetBundle(uri);
            yield return request.SendWebRequest();
            if (request.error != null)
                throw new Exception("www download had an error" + request.error);
            float loadProgress = request.downloadProgress;
            //AssetBundle ab = DownloadHandlerAssetBundle.GetContent(request);
            AssetBundle ab = (request.downloadHandler as DownloadHandlerAssetBundle).assetBundle;
            UnityEngine.Object[] objs = ab.LoadAllAssets();
            foreach (UnityEngine.Object o in objs)
            {
                Instantiate(o);
            }
    
    
        }
    
    
    展开全文
  • unity AB打包 unity2018.2.2

    2018-08-22 16:36:00
    const string path = @"F:\AssetBundle"; /// <summary> /// 打包 /// </summary> [MenuItem("Tools/AssetBuild")] static void AssetBuildAll() { BuildPipeline.BuildAssetBundles(path, B...

    打包

    const string path = @"F:\AssetBundle";
    /// <summary>
    /// 打包
    /// </summary>
    [MenuItem("Tools/AssetBuild")]
    static void AssetBuildAll()
    {
    BuildPipeline.BuildAssetBundles(path, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);
    }

     

    读取:

    //读取本地
    const
    string path = @"F:\AssetBundle"; // Use this for initialization void Start() { AssetBundle ab = AssetBundle.LoadFromFile(path + "/game.u3d"); object[] objs = ab.LoadAllAssets(); foreach (Object item in objs) { Instantiate(item); } }

    //读取服务器 IEnumerator Start() {
    var uwr = UnityWebRequest.GetAssetBundle("https://data-1256223694.cos.ap-chengdu.myqcloud.com/AssetBundle/game.u3d"); yield return uwr.SendWebRequest(); // Get the designated main asset and instantiate it. Instantiate(DownloadHandlerAssetBundle.GetContent(uwr).mainAsset); }

     

    转载于:https://www.cnblogs.com/lichuangblog/p/9518601.html

    展开全文
  • AssetBundle的定义和作用 1,AssetBundle是一个压缩包包含模型、贴图、预制体、声音、甚至整个场景,可以在游戏运行的时候被加载; 2,AssetBundle自身保存着互相的依赖关系; 3,压缩包可以使用LZMA和LZ4压缩...
  • 首先打包对应平台的Ab时需要有这个平台的组件,举例讲比如我要打包WSA平台,那就需要把UWP的IL2CPP装上,否则搞不定; 打包个资源包比较简单,说白了核心的就BuildPipeline.BuildAssetBundles。 [MenuItem("打包/...
  • Unity AssetBundle 教程

    2019-10-12 20:47:20
    Unity AssetBundle 教程 AssetBundle是Unity用来处理资源热更新的,下面...AssetBundle打包 设置AssetBundle名字 手动设置 打包之前按照上图所示的方法,设置一下AssetBundle的名字。 自动设置 将需要进行AssetBu...
  • Unity2018已经把打包过程简化很多了 我们只需要关心两个API: 1.BuildPipline.BuildAssetBundles() 打包AssetBundle 2.BuildPipline.BuildPlayer() 打包场景 1.打包AssetBundle 先在资源的Inspector面板最下方 ...
  • Unity2018已经把打包过程简化很多了我们只需要关心两个API:1.BuildPipline.BuildAssetBundles() 打包AssetBundle2.BuildPipline.BuildPlayer() 打包场景 1.打包AssetBundle先在资源的Inspector面板最下方 填写资源...
  • 3. 打包策略是分场景打包 若文件被文件夹包含打包出来的就是文件夹的名字 否则是场景文件夹名称 4. 当我AB包从硬盘加载完成之后 是不是就该加载到内存 并实例化了? 带有缓存的ab加载机制 5.脚本不允许出现在打包...
  • Unity2018.3开始,新增了一个Prefab Mode,俗称嵌套预制体,在Prefab里套Prefab。实际应用中多少会有些坑。 资源打包Assetbundle一直都有依赖的问题。所以嵌套的Prefab理所当然要预加载。 脚本修改Prefab,很多...
  • Unity Assetbundle的使用

    2019-05-13 17:13:58
    Unity 版本:2018.1.3 1、Assetbundle打包Unity5之后的版本。Assetbundle打包就变的异常方便。不用象以前4.x版本的时代。还需要自己管理引用关系。只要设置好Assetbundle的包名就行。如图: 把...
  • 环境:Unity 2018.4.0参考文献Unity官方文档:[Unity User Manual (2019.2)](Unity User Manual (2019.2))不会C++的码农知乎文章:[游侠:Unity 5.x AssetBundle零冗余解决方案](游侠:Unity 5.x AssetBu...
  • Unity版本:2018.2.15f1 AssetBundle的Build 相信了解一点AssetBundle的你一定知道AssetBundle需要先打包(Build),再加载使用。打包AssetBundle实际上意味着把你分配给这个AssetBundle的所有资源(及其依赖的资源)...
  • 打包解包_Unity-Apk解包

    2021-01-12 18:01:45
    发现了这篇于2018-06-07写完的,内容或许有陈旧 之前解过自己项目的包的代码,研究assetBundle打包的时候,像把bundle解压出来看。结合看来就一个包的逆向。步骤改名解压将".apk"结尾的android包,改为".rar"。可以...
  • 1)Addressable卸载单个资源的疑问​2)如何判断硬件支持GPU Instance3)StringBuilder反射实现String报错4)Unity 2018 RequireES3.1+AEP有什么作用5)Unity打包AssetBundle闪退这是第213篇UWA技术知识分享的推送。...
  • 本文是学习Siki学院Ocean老师的《Unity商业游戏底层资源加载框架(Unity2018.1)》视频课程的学习笔记和总结 AssetBundle打包策略 自定义打包配置表 基于Assets序列化生成编辑器打包配置表,表里的设置主要分为...
  • 在某个PC项目中使用了大量的材质球, 并且都使用了自带的Standard Shader, 在编辑器运行的时候, 一切良好, 运行内存只在1G左右, 然而在进行AssetBundle打包之后, EXE运行内存暴涨至20G都还没进入场景, 简直不可思议. ...
  • 前言Unity版本:Version 2018.4.2这里首先需要我们掌握了XLua的基本知识,具体教程文档可以去GitHub - XLua看看。大概思路:标记需要热更的资源,打包构建AssetBundle资源(包括lua脚本),上传到服务器,客户端通过...
  • Unity-Apk解包

    千次阅读 2020-02-03 11:40:28
    之前解过自己项目的包的代码,研究assetBundle打包的时候,像把bundle解压出来看。结合看来就一个包的逆向。 步骤 改名解压 将".apk"结尾的android包,改为".rar"。可以等到以下几个文件 [外链图片转存失败,源站...
  • 该文章所有效果都是在unity2018基础上实现的,其他版本不一定有该效果。 MenuItem的简介 1.MenuItem的作用 事先声明,以下作用全是自己猜测。 该标签多用于在编辑场景中,你可以将一写常用的方法添加为一个...
  • Unity2018.3 Nested Prefab Mode 嵌套预制体 ...资源打包Assetbundle一直都有依赖的问题。所以嵌套的Prefab理所当然要预加载。 脚本修改Prefab,很多生产环境下都会有代码处理Prefab的情况,而这次新增的Prefab...

空空如也

空空如也

1 2
收藏数 33
精华内容 13
关键字:

assetbundle打包unity2018