• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >游戏开发 > 【Unity3D技术文档翻译】第1.2篇 为打包 AssetBundles 准备资产

【Unity3D技术文档翻译】第1.2篇 为打包 AssetBundles 准备资产

作者:何岸的博客 字体:[增加 减小] 来源:互联网 时间:2017-08-23

何岸的博客通过本文主要向大家介绍了unity,unity3d,unity3d翻译等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

为 AssetBundles 准备资产(Assets)

你可以将任何资产,打包到任何你想要的 AssetBundle 中,这是你的自由。然而,在你创建 AssetBundles 的时候,有些策略可供参考。当你在面对具体项目的时候,可以从下面这些分组策略中,找到一个合适的去使用。你可以随意混合、搭配这些策略。

逻辑实体分组策略

“逻辑实体分组策略”是指:在将资产(assets)分配到 AssetBundle 的时候,考虑到的是这些资产,代表了某个项目的某个功能性部分。比如:UI界面、游戏角色、游戏环境设施,以及其他任何会在应用的生命周期中频繁出现的部分。

举例说明

  • 把一个UI界面的所有纹理(textures)和布局数据,打包到一起
  • 把一个或者一系列游戏角色的模型和动画动作,打包到一起
  • 把需要在多个场景中共享的纹理(textures)和模型,打包到一起

“逻辑实体分组策略”对于可下载内容(DLC)是个理想的解决方案,因为在这种策略下,所有资产都是被分隔开的。于是,你可以只改变单个实体,而无需去下载其他额外的、并没有改变的资产。

正确地使用这个策略的最大技巧和注意事项是:开发者在给每个 AssetBundle 分配资产的时候,必须明确地知道,每个资产在什么时候,以及什么地方会被项目用到。

类型分组策略

使用这个策略,你将会把类型相似的资产打包到一起,比如:音频文件、本地化语言文件等。

“类型分组策略”对于跨平台应用是个非常好的策略。例如,如果你的音频文件在 windows 和 mac 平台使用相同的压缩方法,那么你就能将所有音频资源打包到一个(或者多个,如果资源太多的话) AssetBundle 中,并且可以反复使用这些 AssetBundles 。相反的一个例子是:mac 上压缩好的着色器(shaders),在 windows 中是不能使用的。

此外,如果你的纹理压缩格式以及相关设置,和代码脚本、预设等资产相比没有那么频繁地改动,那么使用这个策略可以使你的 AssetBundles 兼容更多 Unity 版本。

并行分组策略

并行分组策略是指:将需要同时加载和使用的资产打包到一起。能够想象到的是,游戏中的一个关卡,包含了独属于这个关卡的角色、纹理、音乐等等资源,该策略就是用于打包这类资产。

注意,你需要完全确定某个 AssetBundle 中的资产,只会同该 AssetBundle 中的其他资产同时使用。如果 AssetBundle A 对 AssetBundle B 中的某个资产有依赖,那么会显著地增加加载时间。因为你在加载 AssetBundle A 的同时,会被强制加载整个 AssetBundle B。

使用 “并行分组策略” 最典型的案例,是将整个场景打包成 AssetBundle。这样的话,每个场景都应该包含了其需要的所有依赖。

总结

注意,一个项目完全能够,也应该根据你的需求,混合使用上面提到的三种策略。在不同情境下,使用最佳的资产配置策略,将极大地提高项目的效率。

例如,项目可能决定将不同平台的 UI 界面元素打包进不同的 AssetBundle,而不是将场景或者关卡中有交互的内容打包到一起。

无论你使用的是哪种策略,下面提供了一些额外的小贴士,你最好记住它们,因为这会让你更全面地了解分组打包策略:

  • 将频繁更新的资源,与那些几乎不会更新的资源,打包进不同的 AssetBundle。

  • 将可能会被同时加载的资源打包到一起。比如:一个模型及其纹理和动画。

  • 如果你注意到一些 AssetBundles 中的一些对象,对另一个 AssetBundle 中的某个资产有依赖,那么应该把被依赖的资产单独提出来,打包成一个 AssetBundle。另外,如果有一些 AssetBundles 拥有相同的一组资产,那么应该将这组资产提出来,打包成一个 AssetBundle,作为共享资源包。

  • 如果两组对象不太可能同时被加载,比如标准画质和高级画质对应的资产,确保它们有各自的 AssetBundle。

  • 如果某个 AssetBundle 中将近 50% 的资产不会频繁地与其它资产同时加载,那么可以考虑将它们分开。

  • 与上一条相反,如果有少量资产(比如5到10个),它们会被频繁地同时被加载,那么可以考虑将它们合并。

  • 如果有一组对象,仅仅只是同一对象的不同版本,那么可以考虑使用 AssetBundle 变量(也就是上一节提到的 AssetBundle 名称设置旁边的变量设置下拉选项)。

如果本文对你有帮助的话,点个赞或者评论一下吧!

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 如何在Unity中建立一个服务器,然后用MFC作为客户端发送消息?
  • unity全景图片视频有明显的拼接线怎么处理附图片
  • Unity震动手机的问题
  • 求助:天空盒子呈现出来的图像破碎问题
  • GL画线的简单问题(只有这么么多分了)
  • 我想问一下unity添加DLL为什么会失效
  • 关于Unity3DNetWork
  • 我想问下为什么加载同一个SpriteSpriteRender显示图片相反
  • Tiled2Unity没生成prefab
  • 实现unity3d程序一键打印照片

相关文章

  • 2022-04-30Unity 3D TextField控件
  • 2017-06-05 Cocos2d-x建工程时避免copy文件夹和库
  • 2017-06-05 cocos2d-x-35的android移植问题
  • 2017-06-05 cocos2d-x
  • 2017-06-05 unity能用ResourcesLoadAll获取文件夹吗?
  • 2017-06-05 有c++builder可以调用的2D或3D引擎吗?
  • 2017-06-05 cocos2d按钮增加事件SEL_CCControlHandler返回NULL问题
  • 2017-06-05 手游界最火的手游即时对战类手游是如何在高延迟下保证流畅度?
  • 2017-06-05 AmbientOcclusion渲染很慢FPS很低这样会影响整体速度怎么办
  • 2017-06-05 unity访问安卓手机本地资源(如图片、视频)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 一个quick-cocos2dx226里遇到的一个线程信号锁的问题
    • Unity 3D UGUI系统及常用控件
    • Unity 3D角色动画在游戏中的应用
    • 总提示texture没有初始化
    • 描绘内部物体轮廓
    • Cocos2d-xwin7+vs2010配置图文详解
    • cocos2dx添加对话框
    • Unity 3D地形系统概述
    • Unity 3D工具栏和常用工具简介
    • cocos中MenuItemImage选中前后设置的图片大小不一样导致的位置偏移

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有