【Unity3D技术文档翻译】第1.1篇 AssetBundle 工作流
译者前言:本章是关于从创建到加载,再到使用 AssetBundle 的整个流程的概述。阅读本章将对 AssetBundle 的工作流程有个简单而全面的了解。
本章原文所在章节:【Unity Manual】→【Working in Unity】→【Advanced Development】→【AssetBundles】→【AssetBundle Workflow】
AssetBundle 工作流
可以按照下面的这些步骤来学习 AssetBundle。关于每个步骤的详细内容,可以在本文档的其他章节中找到。
将资产(Assets)配置到 AssetBundles
为了将一个资产配置到一个 AssetBundle,需要按照以下步骤:
1. 从你的 Project 面板里选择你想要分配到 AssetBundle 里的资源
2. 观察 Inspector 面板
3. 在 Inspector 面板的底部,能看到一块可以设置 AssetBundle 及其变量的区域
4. 左侧的下拉选项栏可以设置 AssetBundle,右侧的下拉选项栏用来设置变量
5. 左侧的下拉选项栏默认显示“None”,点击后显示其他已经注册过的 AssetBundle 的名称选项
6. 如果没有注册过 AssetBundle,你会看到如图片所示的列表:
8. 输入你想要的 AssetBundle 名称。需要注意,AssetBundle 名称支持目录结构。想要添加子文件夹,只需要用“/”分隔文件名称即可。比如:如果 AssetBundle 名称是“environment/forest”,将会在“environment”文件下创建一个名为“forest” 的 AssetBundle
9. 一旦你选择或者创建了一个 AssetBundle 名称,接着你就可以在右边的下拉选项栏重复上述步骤,选择或者创建一个你想要的变量名称。变量名称对创建 AssetBundle 不是必须的。
想要阅读更多关于配置 AssetBundle 以及配置策略相关的内容,请看【为打包 AssetBundles 准备资产】一节。
创建 AssetBundles
在 Asset 文件夹下创建一个 Editor 文件夹,然后将包含以下代码的脚本文件放在 Editor 文件夹下:
这个脚本将会在“Assets”菜单的最底部,创建一个叫“Build AssetBundles”的按钮。当你点击该按钮,就会执行脚本中与之对应的方法,并出现一个构建进度条。接着,所有被你命名了的资产(assets)都会被构建成对应的 AssetBundle,并放置在你定义的路径下。在本章节中,该路径为:“Assets/Build AssetBundles”。
想要知道更多关于这段代码的细节,请看【创建 AssetBundle】一节。
将 AssetBundles 更新到远程仓库
这一步对每个开发者都是不同的,而不是 Unity 告诉你如何去做。如果你计划将你的 AssetBundles 部署到远程虚拟主机上,就需要继续学习相关内容。如果你是完全的本地开发,并打算把你所有的 AssetBundles 都放在本地磁盘上,那么就可以跳过关于“远程仓库”的内容。
加载 AssetBundles 和 资产(Assets)
对于打算从“本地仓库”加载资源的开发者,你会对“ AssetBundles.LoadFromFile ”这个 API 感兴趣。比如下面这段代码:
LoadFromFile 的参数是 AssetBundle 的路径。
如果你将 AssetBundles 部署在你自己的虚拟主机上,并且需要在游戏中下载它们,那么你会对“ UnityWebRequest ”这个 API 感兴趣。比如下面这个例子:
GetAssetBundle(string, int) 的参数有两个,一个是 AssetBundle 位置的路径,另一个是你想要下载的 AssetBundle 的版本。在上面这个例子中,我们指向的是一个本地文件。我们也可以将本地路径替换成任何网络链接,以指向部署在虚拟主机上的 AssetBundles。
UnityWebRequest 有个处理 AssetBundles 的特定方法句柄:DownloadHandlerAssetBundle。这个方法句柄可以从网络请求(request)中获取 AssetBundles。
无论你用的是哪个方法,你现在都可以获取 AssetBundle 对象了。为了获取 AssetBundle 对象,你可以使用 LoadAsset<T>(string) 方法。该方法有两个参数,参数T是你尝试去加载的资源的类型;string 参数是 AssetBundle 中你想要加载的对象的名称。这个方法会返回你从 AssetBundle 中加载的任何对象。你可以使用这些返回的对象,就像使用 Unity 中的其他任何对象一样。 比如:如果你想要在场景中创建一个对象,你只需要调用 Instantiate(gameObjectFromAssetBundle) 即可(gameObjectFromAssetBundle 代指你从 AssetBundle 中加载的对象)。
想要了解更多关于加载 AssetBundles 的 APIs 的信息,请看【使用本地 AssetBundle】一节。
如果本文对你有帮助的话,点个赞或者评论一下吧!
最新文章
- foxmail邮箱,签名中如何添加当前日期
- 关于Docker目录挂载的总结
- linux下的apache配置文件详解
- centos 7 python2.7.5升级到3.5.2
- react-native 计算时间差
- 通用窗口类 Inventory Pro 2.1.2 Demo1(下续篇 ),物品消耗扇形显示功能
- 数据库与SQL语言
- 第二百零七天 how can I坚持
- 对于android触摸事件模型的一些理解
- 【转】jsoncpp在xcode中的使用
- Android有效的治疗方法Bitmap,减少内存
- web代理进行跨域访问
- mybatis 一对多和多对一关联查询
- JavaScript学习笔记(一)——数据类型和变量
- 将配置文件appsetting中的值转换为动态对象调用
- Unity 个人用过的地面检测方案总结
- composer更改源为国际
- LightOJ 1355 :Game of CS(树上green博弈)
- js正则表达式----replace
- mysql安装管理 ->; 编译&;yum_02
热门文章
- OpenCV3.0 HDR(高动态范围)示例代码以及用法
- 【问题解决】Eclipse中 ctrl+空格 content assist
- Mezzanine (Windows10下)安装配置与修改(更新中)
- volatile特性及内存语义
- gRPC实战
- -bash: warning: setlocale: LC_CTYPE: cannot change locale (EN_US.UTF-8): No such file or directory
- linkin大话设计模式--观察者模式
- 长整形 Unix系统毫秒时间 (long类型) 转换为时间格式
- MySQL刷新事务日志级别设置
- Struts2是什么?