15976人加入学习
(55人评价)
AssetBundle(创建打包)入门学习(基于Unity2017)
价格 免费

AssetBundle是一个压缩包包含模型、贴图、预制体、声音、甚至整个场景,可以在游戏运行的时候被加载;

AssetBundle自身保存着互相的依赖关系;

压缩包可以使用LZMA和LZ4亚索算法,减少包大小,更快的进行网络传输;

可下载内容放在AsetBundle里面,可以减少安装包的大小;

[展开全文]
J博士 · 2018-06-30 · 该任务已被删除 0

AssetBundle:资源的压缩包

[展开全文]
J博士 · 2018-06-30 · 该任务已被删除 0

CreateAssetBundles

[展开全文]
Anone · 2018-06-22 · 该任务已被删除 0

代码打包

 

[展开全文]
守護明天 · 2018-05-19 · 该任务已被删除 0

uri是地址,如果要使用本地地址的话,要改一下uri里面的那个file:///改成file:// 不然会识别不到。

如果是用服务器的,那么直接按照老师的来就OK

[展开全文]
Milk · 2018-04-29 · 该任务已被删除 1

AssetsBundle的mainfest里面保存了资源路径、资源名称、依赖资源Dependencies、CRC校验码等等。

加载一个有依赖资源的资源的时候,必须要先加载它的依赖资源,即mainfest里面指定的依赖资源。

[展开全文]
Milk · 2018-04-28 · 该任务已被删除 0

把共享资源打包到一起,共享资源即依赖资源,这些资源会被其他资源所依赖,UNITY会自动地把一个资源它所依赖的资源都自动打包起来,如果有多个资源都利用到了同样的资源,那么它们会重复地对一个共享资源进行打包,造成空间上的浪费,所以我们需要将共享资源都集中打包,这样UNITY打包那些依赖于共享资源的资源时就不会再去打包共享的资源,因为已经有了,这是UNITY自动做的工作,我们只需要将共享资源都单独地打包出来就OK了,这样就可以节省空间了。

[展开全文]
Milk · 2018-04-28 · 该任务已被删除 0

不同资源可放在同一个AssetBundle包里。

AssetBundle路径可以设置为xxx/yyy,这个xxx是一个子目录,yyy是AssetBundle的名字,后缀可随意写。

创建包的方法是        BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);

表示在dir目录下创建AssetBundle包,以上面的来看是会在dir目录下的xxx子目录下有一个yyy名的包。第二个参数和第三个参数分别是包选项以及发布包的主机环境

目录Directory.CreateDirectory(dir);这个dir是一个目录名称string类型的

[展开全文]
Milk · 2018-04-28 · 该任务已被删除 0

在要用到bundle的manifest时,不需要在程序里直接加载manifest文件,只需要加载对应的bundle,然后bundle里有方法可以获取到对应的manifest文件。

 

manifest.GetAllAssetBundles() 获取所有assetbundle的名字

manifest.GetAllDependencies("assetbundle");//获取assetbundle所依赖的

[展开全文]
cwenn · 2018-04-19 · 该任务已被删除 0

bundle的manifest的重要信息

CRC:

Assets : 包含了这个bundle包含的原始资源

Dependencies : 这个bundle依赖的其它bundle

注意,在加载一个bundle的时候,一定要先把它所依赖的bundle加载进来,否则即使在游戏包体中这个bundle用到的资源,bundle里的对象的引用也会丢失。它只会依赖共享包里的资源。

[展开全文]
cwenn · 2018-04-18 · 该任务已被删除 0

streamingAsset文件夹被打包时不会做任何加密,原封不动的进行打包(放置游戏核心内容,更新资源才进行打包)

[展开全文]
sdewqazxcds · 2018-04-18 · 该任务已被删除 0

所谓的AssetBundle,可以指文件里的具体的bundle文件,也可以指代码里的bundle的内存对象

加载并使用assetbundle的过程:

1、用AssetBundle的接口从文件里加载bundle

        AssetBundle ab = AssetBundle.LoadFromFile("AssetBundles/scene/wall.unity3d");
 

2、从bundle里通过LoadAsset()等接口加载指定的prefab

        GameObject cubewallPrefab = ab.LoadAsset<GameObject>("cubewall");
 

3、实例化prefab

        Instantiate(cubewallPrefab);
 

[展开全文]
cwenn · 2018-04-17 · 该任务已被删除 0

打包脚本在Editor模式下执行,需要把代码放到Editor目录下。

 

BuildPipeline.BuildAssetBundles(path, BuildAssetBundleOptions, BuileTarget);

[展开全文]
cwenn · 2018-04-17 · 该任务已被删除 0

没有主页的web服务器(以NetBox2.exe所在目录为根目录),是无法通过本机连接访问成功的,因为没有主页

[展开全文]
sdewqazxcds · 2018-04-15 · 该任务已被删除 0

在4.x时代,我们可以通过CreateFromFile或CreateFromMemory方法将磁盘上的文件或内存中的流构造成我们需要的AssetBundle对象。但是在5.x版本中,曾经的这两个方法已经被新的LoadFromFile、LoadFromMemory方法所代替(这两个方法还有异步的版本),且机制上也有了一些区别。

  • public static AssetBundle LoadFromFile(string path, uint crc = 0):新的从文件创建加载AssetBundle方法和4.x中的CreateFromFile方法在机制上有了一些分别,旧的CreateFromFile必须使用未压缩的Bundle文件才能在运行时动态创建AssetBundle对象。而新的LoadFromFile方法则没有这个要求,它支持上一节中提到的几个压缩格式,针对LZ压缩格式和未压缩的磁盘上的bundle文件,该方法会直接加载。针对使用默认的LZMA压缩格式压缩的bundle文件,该方法会在幕后先将bundle文件解压后再加载。这是最快的加载AssetBundle的方式。该方法是同步版本,还有异步版本:LoadFromFileAsync。
  • public static AssetBundle LoadFromMemory(byte[] binary, uint crc = 0):从内存中获取Bundle的二进制数据,同步地创建AssetBundle对象。该方法一般用在经过加密的数据上,经过加密的流数据经过解密之后我们可以调用该方法动态的创建AssetBundle对象。该方法是同步版本,还有异步版本:LoadFromMemoryAsync。

以上便是在运行时动态加载AssetBundle对象的方法。下面,我们再从加载过程中内存消耗的角度来对比一下这几种加载AssetBundle对象的方法,下表是Unity3D官方的一个中文版总结。

[展开全文]
sdewqazxcds · 2018-04-13 · 该任务已被删除 0

如果打包后,预制件有依赖于材质的包,需要先加载材质包,再加载预制件,否则会材质丢失

[展开全文]
sdewqazxcds · 2018-04-12 · 该任务已被删除 0

把材质打包到AssetBundles中,预制件会自动依赖AssetBundles中的材质,所以体积会变小

 

如果不打包(依赖)材质:

 

预制件会包含各自的材质,造成资源浪费

[展开全文]
sdewqazxcds · 2018-04-11 · 该任务已被删除 0

从AssetBundles中拖放出来的资源材质 依赖于AssetBundles,而不是本地材质,所以会造成材质丢失

[展开全文]
sdewqazxcds · 2018-04-11 · 该任务已被删除 0

目录名 / 资源名称 ,打包时可以添加目录

 

多个预制件放在同一目录下,且同一名字,会打包成一个资源

[展开全文]
sdewqazxcds · 2018-04-10 · 该任务已被删除 0

AssetBundle名称不区分大小写,第二个参数是后缀名,可自定义

 

Editor文件夹不会被打包

AssetBundle会打包所有带标签的资源

[展开全文]
sdewqazxcds · 2018-04-10 · 该任务已被删除 0

授课教师

SiKi学院老师

课程特色

图文(1)
下载资料(1)
视频(24)