实力封装:Unity打包AssetBundle(二)
→前情提要:Unity最基本的AssetBundle打包方式。
第二种打包方式
Unity提供的BuildAssetBundles API还有一个重载形式,看下面↓↓
public static AssetBundleManifest BuildAssetBundles(string outputPath, AssetBundleBuild[] builds, BuildAssetBundleOptions assetBundleOptions, BuildTarget targetPlatform);
这个重载函数多了一个参数,这个参数是一个AssetBundleBuild数组,下面我们来说说AssetBundleBuild是何方妖孽↓↓
AssetBundleBuild是一个结构体,有四个属性,说明如下↓↓
| assetBundleName | string类型,打包后AssetBundle包的名字 |
| assetNames | string数组类型,AssetBundle包中每一个文件相对于工程目录的路径(一个AssetBundle包中可以有多个文件) |
| addressableNames | string数组类型,相当于是assetNames的别名,必须和assetNames长度一致 |
| assetBundleVariant | string类型,设置AssetBundle变体,其实就是后缀名 |
一般情况下,只要设置AssetBundleBuild结构体中的assetBundleName属性和assetNames属性就可以了,如果你愿意给打在AssetBundle包中的文件重命名的话,就设置一下addressableNames属性,不想重命名的文件就给一个空字符串,这样默认就会使用assetNames了。要是还想设置自定义的后缀名,可以试试AssetBundleVariant。
有了AssetBundleBuild这样一个结构体数组做参数,这就意味着我们可以让打包的过程更简单了。不用在Inspector面板中给每一个需要打包的文件设置AssetBundle名称,我们可以直接在编辑器中鼠标点选需要打包的文件,然后一键打包。当然,这也就意味着我们不能随意的控制每个AssetBundle包的名字了,有利有弊吧。
在这里讲一讲打包的方式吧,我们可以把许多文件打进一个AssetBundle包,也可以将每个文件单独打一个AssetBundle包,具体怎么打就要看需求了。
下面是打包的代码↓↓
- [MenuItem("AssetBundles/Buil (All)")]
- private static void _packageBuddlesInOne() {
- string _packagePath = UnityEditor.EditorUtility.OpenFolderPanel ("Select Package Path", "F:/", "");
- if (_packagePath.Length <= 0 || !Directory.Exists (_packagePath))
- return;
- buildMap[0].assetBundleName = "myBnndle";
- //将选中对象一起打包
- AssertBundleAssetBundleBuild[] buildMap = new AssetBundleBuild[1];
- GameObject[] objs = Selection.gameObjects; //获取当前选中的所有对象
- string[] itemAssets = new string[objs.Length];
- for (int i = 0; i < objs.Length; i++) {
- itemAssets [i] = AssetDatabase.GetAssetPath (objs [i]); //获取对象在工程目录下的相对路径
- }
- buildMap [0].assetNames = itemAssets;
- AssetBundleManifest manifest = BuildPipeline.BuildAssetBundles (_packagePath, buildMap, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);
- AssetDatabase.Refresh (); //刷新
- if (manifest == null)
- Debug.LogError("Package AssetBundles Faild.");
- else
- Debug.Log("Package AssetBundles Success.");
- }
我们也可以将每个对象都打进不同的AssetBundle包,看代码↓↓
- [MenuItem("AssetBundle/Build (Selected)")]
- private static void _packageBuddleSelected() {
- string _packagePath = UnityEditor.EditorUtility.OpenFolderPanel ("Select Package Path", "F:/", "");
- if (_packagePath.Length <= 0 || !Directory.Exists (_packagePath))
- return;
- AssetBundleBuild[] buildMap = new AssetBundleBuild[objs.Length];
- GameObject[] objs = Selection.gameObjects;
- for (int i = 0; i < objs.Length; i++) {
- string[] itemAsset = new string[] { AssetDatabase.GetAssetPath (objs[i]) };
- buildMap[i].assetBundleName = objs[i].name;
- buildMap [i].assetNames = itemAsset;
- }
- AssetBundleManifest manifest = BuildPipeline.BuildAssetBundles (_packagePath, buildMap, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);
- AssetDatabase.Refresh ();
- if(menifest == null)
- Debug.LogError("Error:Package Failed");
- else
- Debug.Log("Package Success.");
- }
按↑图操作,就可以打包选中的文件了。
实力封装:Unity打包AssetBundle(二)的更多相关文章
- 实力封装:Unity打包AssetBundle(大结局)
→→前情提要:让用户选择要打包的文件←← 大结局:更多选择 Unity打包AssetBundle从入门到放弃系列终于要迎来大结局了[小哥哥表示实在写不动了o(╥﹏╥)o]... 经过上一次的教程,其实 ...
- 实力封装:Unity打包AssetBundle(一)
说明:这是一系列循序渐进的教程,今天先介绍最简单的AssetBundle打包方式. 这是一个由在Unity中需要加载模型而引发出来的一系列坑,为了填坑花了不少时间,如果有需要在Unity中自定义菜单, ...
- 实力封装:Unity打包AssetBundle(番外篇)
前情提要:第二种打包方式. 自定义AssetBundle包扩展名 在之前的教程中,我们已经多次提到过扩展名了,并且也已经说明了如何设置自定义的AssetBundle扩展名.至于为什么还要把它单独拿出来 ...
- 实力封装:Unity打包AssetBundle(三)
前情提要:第二种打包方式 窗口初现 通过前面的两篇教程和一篇番外,我们已经完全实现了打包的功能.但是使用起来总是觉得有些晦涩别扭,如果不告诉别人怎么使用,对方肯定是一头雾水. What?你给我的这是啥 ...
- 实力封装:Unity打包AssetBundle(四)
→→前情提要:窗口初现←← 让用户选择要打包的文件 时至今日,我们选择打包文件的方式依然是在Project面板或Hierarchy面板中用鼠标点选.现在既然有了窗口,我们自然希望可以将所有文件罗列在窗 ...
- Unity手游之路<十一>资源打包Assetbundle
http://blog.csdn.net/janeky/article/details/17652021 在手游的运营过程中,更新资源是比不可少的.资源管理第一步是资源打包.传统的打包可以将所有物件制 ...
- Unity 5.X扩展编辑器之打包assetbundle
5.x的assetbundle与4.x以及之前的版本有些不同,不过本质是一样的,只不过5.x打包assetbundle更为简单和人性化了,总体来说只需要三个步骤: 第一步:创建打包资源 //这里是一个 ...
- 【Unity】AssetBundle的使用——打包/解包
最近参考了各位大神的资源,初步学习了Unity的资源管理模式,包括在编辑器管理(使用AssetDatabase)和在运行时管理(使用Resources和AssetBundle).在此简单总结运行时用A ...
- Unity打包/读取AssetBundle资源全教程
Unity 资源AssetBundle打包 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar ...
随机推荐
- (未完成👃)You Don't Know JS: Scope & Closures (第5章: Scope & Closures)
Chapter 5: Scope Closure 我们到达这里时,已经对作用域如何工作有了非常健康稳固的理解. 下面,我们转移注意力到一个及其重要,但长期难以理解,几乎是神话中的部分语言:Closur ...
- linux 下如何安装memcached 和启动服务
一.安装gcc # yum -y install gcc 二.安装libevent # wget http://www.monkey.org/~provos/libevent-2.0.12-stabl ...
- vue.js面试题整理
Vue.js面试题整理 一.什么是MVVM? MVVM是Model-View-ViewModel的缩写.MVVM是一种设计思想.Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务 ...
- 378. Kth Smallest Element in a Sorted Matrix(java,优先队列)
题目: Given a n x n matrix where each of the rows and columns are sorted in ascending order, find the ...
- Matlab-11:Gausssidel迭代法工具箱
算法推导: function [u,n]=GaussSeid(A,b,u0,eps,M) %GaussSeid.m为用高斯-塞德尔迭代法求解线性方程组 %A为线性方程组的系数矩阵 %b为线性方程组的常 ...
- 【IDEA】【3】操作使用
前言: 1,显示工具栏及底部周边工具栏 2,修改项目名称 3,文件重命名 4,鼠标移动到方法上时进行提示注释 5,修改文件后自动重启 6,查看代码覆盖率 正文: 1,显示工具栏及底部周边工具栏 Vie ...
- OpenStack设计与实现5——RESTful API和WSGI
转https://segmentfault.com/a/1190000004361778 Tips:文章为拜读@xingjiarong 后有感而做的分享,先对作者表示感谢,附原文地址:http://b ...
- 十三、MVC的WEB框架(Structs2)
一.Structs2的应用 Structs2是基于MVC的WEB框架.一般基于框架的程序要运行成功,对于JAR包的版本,配置文件的正确性有着苛刻的要求,一个地方错了,都会导致框架程序运行出错. 1.首 ...
- ActiveMQ的spring配置文件
从官网copy出来,做了部分修改: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=& ...
- windows开机锁定小键盘
1.启动注册表编缉器 按下windows+R键,输入regedit回车启动注册表编缉器 2.修改注册表默认值 展开HKEY_USERS\.DEFAULT\Control Panel\Keyboard将 ...