Unity3d中使用assetbundle
2024-08-25 00:39:18
1、导出assetbundle:
①单个资源导出成assetbundle;
②多个资源导出成一个assetbundle;
2、读取assetbundle:
①加载到内存;
②解压为具体资源。
1、导出assetbundle:
①单个资源导出成assetbundle;
BuildPipeline.BuildAssetBundle(Object obj, null, string path, BuildAssetBundleOptions.CollectDependencies, BuildTarget.Android); //obj 单个资源,转成Object类型
//path 路径(例如:"Assets/streamingassets/obj.unity3d"),资源包的后缀名可以任意写或不写
//BuildAssetBundleOptions.CollectDependencies 包含资源的依赖关系,比如要导出的资源是一个prefab,就会把其引用的mesh、贴图、材质球、动画统统导出到资源包里面去
//BuildTarget.Android 导出的资源包是给什么平台用的,Android、PC、或者别的什么
②多个资源导出成一个assetbundle;
BuildPipeline.BuildAssetBundle(null, Object[] objs, string path, BuildAssetBundleOptions.CollectDependencies, BuildTarget.Android); //objs 包含多个资源的数组,Object[]类型
//path 路径(例如:"Assets/streamingassets/obj.unity3d"),资源包的后缀名可以任意写或不写
//BuildAssetBundleOptions.CollectDependencies 包含资源的依赖关系,比如要导出的资源是一个prefab,就会把其引用的mesh、贴图、材质球、动画统统导出到资源包里面去
//BuildTarget.Android 导出的资源包是给什么平台用的,Android、PC、或者别的什么
2、读取assetbundle:
①加载到内存;
②解压为具体资源。
IEnumerator Load(string path, string name)
{
/*下面是加载到内存的过程*/
WWW bundle = new WWW(path); //例如:"Assets/streamingassets/obj.unity3d"
yield return bundle; /*下面是解压为具体资源的过程*/
Object obj = bundle.assetBundle.Load(name); //name是具体资源的名字
}
注:IEnumerator是协程,可以想象成Unity3d中的多线程,就是同时可以干很多事情的意思,虽然原理上与多线程不同,但使用起来的效果几乎没有区别。如果要处理的是很多资源的assetbundle的话,不管是导成一个了,还是多个的,要结合策划的具体需求合理规划协程的组织。
随手补充:
[MenuItem("Assets/Export Android Assetbundle")]
static void Export()
{
string fileName = Selection.activeObject.name;
string assetbundlePath = EditorUtility.SaveFilePanel("Save", Application.dataPath, fileName, "assetbundle");
BuildPipeline.BuildAssetBundle(Selection.activeObject, null, assetbundlePath, BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets, BuildTarget.Android);
}
最新文章
- 查看旧版jexus命令
- linux命令:touch
- POJ-3461 Oulipo(KMP,模式串在主串中出现次数)
- jquery ui autoComplete自动完成
- 重看Decorator Pattern,联想到Delegate传递及Flags Enum--欢迎拍砖!
- Codeforces 553C Love Triangles(图论)
- usaco5.5-Hidden Passwords
- 自定义VS的ItemTemplates 实现任意文件结构
- ubuntu 下配置vim for python
- python学习:99乘法口诀
- C++编程剖析 问题 方案 和设计准则
- JdbcTemplate 配置多数据源(完全照抄,完整)
- Java基础中的RMI介绍与使用
- Android内存泄漏的检测流程、捕捉以及分析
- ps怎么撤销的三种方法和ps撤销快捷键以及连续撤销多步快捷键
- MySQL数据库解决乱码 latin1 转 gbk
- Extjs4 store load 有中文字符提交后台乱码解决方法
- Linux学习笔记02—磁盘分区
- 转-ubuntu清理卸载wine的残余项目
- oracle共享与专用模式的动态转换及区别(转载)
热门文章
- linux日常管理-sar工具
- SpringMVC 学习笔记(请求方法的返回值和参数)
- XML解析代码课堂讲解实例
- C语言入门题
- 树莓派 Learning 002 装机后必要的操作 --- 08 实现PC端 远程登入 树莓派 --- 法2 远程登录树莓派的图形桌面
- vue前端+java后端 vue + vuex + koa2开发环境搭建及示例开发
- java之格式化输出
- ZOJ 3939 The Lucky Week (暴力找规律)
- 每次选中数组中的N条数据, 如果让每条数据被选中的次数做到平均??
- vue中computed与methods的异同