Unity3D开发之----将预设体Prefab压缩成AssetBundle文件
我在写这边文章之前参照了如下文章:
https://www.jianshu.com/p/5d4145cd900c
----------------------------我是分割线--------------------------
Asset Bundle的作用:
1.AssetBundle是一个压缩包包含模型、贴图、预制体、声音、甚至整个场景,可以在游戏运行的时候被加载;
2.AssetBundle自身保存着互相的依赖关系;
3.压缩包可以使用LZMA和LZ4压缩算法,减少包大小,更快的进行网络传输;
4.把一些可以下载内容放在AssetBundle里面,可以减少安装包的大小;
什么是AssetBundle
可以归为两点:
1,它是一个存在于硬盘上的文件。可以称之为压缩包。这个压缩包可以认为是一个文件夹,里面包含了多个文件。这些文件可以分为两类:serialized file 和 resource files。(序列化文件和源文件)
serialized file:资源被打碎放在一个对象中,最后统一被写进一个单独的文件(只有一个)
resource files:某些二进制资源(图片、声音)被单独保存,方便快速加载
2,它是一个AssetBundle对象,我们可以通过代码从一个特定的压缩包加载出来的对象。这个对象包含了所有我们当初添加到这个压缩包里面的内容,我们可以通过这个对象加载出来使用。
如何操作?
1.首先,先将游戏物体设置成Prefab预设体(在U3D中创建游戏物体,然后在Assets文件夹下创建一个Prefab文件夹,并将物体拖拽到该文件夹中,就形成了预设体)
然后对该预设体进行编辑:
这里的含义是:生成的AssetBundle文件会生成在scene文件夹下的model.ab文件中,用户可以自定义。
2.在Assets目录下创建一个Editor文件夹,并在Editor文件夹下创建编辑扩展脚本(一定要在Editor文件夹下创建编辑扩展脚本,否则不会生效!!!)
这里名字随便命名,注意规范!
3.该脚本代码如下:
using UnityEditor;
using System;
using System.IO;public class CreateAssetbundles
{//可以让U3D的菜单栏生成指定名称的菜单项,点击后,用来调用该方法[MenuItem("AssetsBundle/Build AssetBundles")]static void BuildAllAssetBundles()//进行打包{string dir = "AssetBundles";//判断该目录是否存在if (Directory.Exists(dir) == false){Directory.CreateDirectory(dir);//在工程下创建AssetBundles目录}//参数一为打包到哪个路径,参数二压缩选项 参数三 平台的目标/*BuildAssetBundleOptions.None:使用LZMA算法压缩,压缩的包更小,但是加载时间更长。使用之前需要整体解压。一旦被解压,这个包会使用LZ4重新压缩。使用资源的时候不需要整体解压。在下载的时候可以使用LZMA算法,一旦它被下载了之后,它会使用LZ4算法保存到本地上。BuildAssetBundleOptions.UncompressedAssetBundle:不压缩,包大,加载快BuildAssetBundleOptions.ChunkBasedCompression:使用LZ4压缩,压缩率没有LZMA高,但是我们可以加载指定资源而不用解压全部。注意使用LZ4压缩,可以获得可以跟不压缩想媲美的加载速度,而且比不压缩文件要小。*/BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);}
}
编写好代码之后,U3D的菜单栏会生成一个菜单项:
Unity3D开发之----将预设体Prefab压缩成AssetBundle文件相关推荐
- 将文件夹压缩成zip文件
一 代码 package ZipFile;import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUt ...
- java zip压缩 加密码_java 压缩成zip文件、解压zip文件(可设置密码)
1.情景展示 java实现将文件夹进行压缩打包的功能及在线解压功能 2.解决方案 方式一:压缩.解压zip 准备工作:slf4j-api.jar org.slf4j slf4j-api 1.7.25 ...
- OpenCV中将RGB数组在内存中压缩成JPEG文件
环境 jpeg库: jpegsr9a 下载地址:http://www.ijg.org/ 编译环境: vs2015 Opencv 3.4.2 一.RGB数组来自BMP文件,直接输出在文件系统上 1.1 ...
- java 把文件压缩成zip文件
ackage org.fh.util;import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStr ...
- php将文件夹压缩成zip文件,将文件夹压缩成zip文件的php代码_php实例
1.请先下载我准备好的zip.php工具类,下载后解压,将里面的文件放入对应的目录中,我是放在虚拟目录下的include文件夹中. 2.在你的php文件中加入下面代码即可 复制代码 代码如下: req ...
- Java导出多个excel并打包压缩成.zip文件
1.先获取到数据,并将数据导出excel到指定位置 public void downPoliceZip(WorksitePoliceApiInfo worksitePoliceApiInfo) thr ...
- linux下使用命令lha压缩成.lzh文件包
1.安装相关工具 sudo apt-get install jlha-utils 2.压缩命令 lha a 新压缩文件名.lzh 压缩内容.txt 3.解压命令x ,会默认解压到当前压缩文件路径下 l ...
- vue -- vue-cli webpack项目打包后自动压缩成zip文件
用vue2.0开发项目,使用npm run build 命令 ,但是只会生成dist文件夹,以下是生成zip压缩包方法 1,插件安装 webpack插件安装 filemanager-webpack-p ...
- 定期备份web工程,压缩为.zip文件
前些天写了个小练习,定期备份web工程,感觉有点意思,也有点小用处.由于最近封闭开发,下班比较晚,所以电脑一般不关机,省得麻烦,这样就可以一直开着我本机的web服务器,每天备份我的web工程了.备份可 ...
最新文章
- 头条抖音后端技术3面,centos卸载软件
- python自动测试g_Python自动化测试如何自动生成测试用例?
- 什么叫dfs文件服务器,什么是DFS(分布式文件系统)以及DFS的优点
- AIRAVATA:量化机器学习中的参数泄露
- ABAP CCDEF, CCIMP, CCMAC, CCAU, CMXXX这些东东是什么鬼
- ad如何镜像器件_使用 Dockerfile 制作镜像
- php将文件夹压缩成zip文件,将文件夹压缩成zip文件的php代码_php实例
- React系列---Babel
- CCNA学习要点,希望能对初学者有帮助
- ubuntu desktop 12 lts 安装 vmplayer 问题
- json接口(使用,以及自定义)
- vivado快速下载及解压安装教程
- IT界最短的笑话:上中台!
- 探究md5是否可以解密
- 迷宫(二) 计蒜客--1596
- sqlmap tamper mysql_Sqlmap Tamper大全(1)
- New Bing新必应内测资格申请教程,无需科学上网,一分钟搞定!
- AI行业强者愈强?Tesra超算网络助力中小AI开发企业!
- 【论文阅读】Learning Effective Road Network Representation with Hierarchical Graph Neural Networks
- 全民小程序社交分销时代已经来临,掌握小程序分销系统即掌握商机!