- 用户指南
- 资源商店 (Asset Store)
- 资源服务器 (Asset Server)(仅限团队许可证)
- 缓存服务器(仅限团队许可证)
- 幕后场景
- 创建游戏
- 运行时实例化预设 (Prefabs)
- 变换 (Transforms)
- 物理
- 添加随机的游戏元素
- 粒子系统(Particle Systems)
- Mecanim 动画系统
- 旧动画系统
- 导航网格 (Navmesh) 和寻路 (Pathfinding)(仅限专业版 (Pro))
- Sound (音频侦听器)
- 游戏界面元素
- 多玩家联网游戏
- iOS 开发入门
- Android 开发入门
- Blackberry 10 开发入门
- Metro:入门指南
- 本地客户端开发入门
- FAQ
- Advanced
- Vector Cookbook
- 资源包(仅限专业版)
- Graphics Features
- 资源数据库 (AssetDatabase)
- 构建播放器管道
- 分析器(仅限专业版)
- 光照贴图快速入门
- 遮挡剔除(仅限专业版)
- 相机使用技巧
- 运行时加载资源
- 通过脚本修改源资源
- 用程序生成网格几何体
- 富文本
- 在 Unity 工程 (Project) 中使用 Mono DLL
- 事件函数的执行顺序
- 移动优化实用指南
- Unity XCode 工程结构
- 优化图形性能
- 减少文件大小
- 理解自动内存管理
- 平台依赖编译
- 泛型函数
- 调试
- 插件(专业版/移动版特有功能)
- 文本场景文件格式(仅限专业版)
- 流媒体资源
- 启动时运行编辑器脚本代码
- 网络模拟
- VisualStudio C 集成
- 分析
- 检查更新
- 安装多版本 Unity
- 故障排除
- Unity 中的阴影
- Unity 中的 IME
- 对集成显卡进行优化
- 网络播放器 (Web Player) 部署
- 使用网络播放器中的信任链系统
减少文件大小
Unity 后处理所有导入的资源
Unity 始终后处理导入的文件,因此,在使用多层 psd 文件代替 jpg 储存文件,对将要部署的播放器大小没有任何影响。保存文件为正在使用的格式(例如 .mb 文件、.psd 文件、.tiff文件)将使得工作更加轻松简单。
Unity 剔除未使用的资源
工程文件夹中的资源数量不会影响所构建播放器的大小。Unity 可以非常智能地检测哪些资源已在游戏中使用,而哪些没有使用。Unity 在构建游戏之前会跟踪所有资源的引用,并生成一个需要包含在游戏中的资源列表。因此,可以将未使用的资源安全保存在工程文件夹中。
Unity 输出已使用文件大小的概述
Unity 完成构建播放器之后,将输出概览,说明占据最大文件尺寸的资源类型,它也将输出包含在游戏构建中的资源。只需打开编辑器控制台日志便可查看:单击控制台窗口(窗口 (Window) -> 控制台 (Console))中的打开编辑器日志 (Open Editor Log) 按钮。
文件标题不属于资源,但代表用来维持资源引用和设置的数据,如资源资产。换言之,它是文件中除原始数据内容以外的附加数据。通常,它占据的比例很小,如果数值较大,就应该检查资源 (Resources) 文件夹中是否包含资产。如果是,可以将部分或所有文件移出文件夹。可以切换到使用资源包 (AssetBundles) 以动态加载资源。
优化纹理尺寸
通常纹理会在构建中占用大量空间。首先要做的是在可能的地方压缩纹理格式(DXT(台式机平台)或 PVRTC)。
如果压缩之后纹理尺寸依然没有变小,请试着减少纹理的大小。这里有个技巧:不需要修改实际的源内容,只需在项目视图的导入设置 (Import Settings) 菜单下选择最大纹理尺寸 (Max Texture Size)。这样就可以放大使用此纹理的对象,然后调整最大纹理尺寸 (Max Texture Size),直到对象在场景视图 (Scene View) 中画质变差为止。
更改最大纹理尺寸不会影响纹理资源,它只会影响游戏的分辨率
纹理究竟占用多少内存?
Desktop
压缩 | 内存消耗 |
RGB Compressed DXT1 | 0.5 bpp (bytes/pixel) |
RGBA Compressed DXT5 | 1 bpp |
RGB 16bit | 2 bpp |
RGB 24bit | 3 bpp |
Alpha 8bit | 1 bpp |
RGBA 16bit | 2 bpp |
RGBA 32bit | 4 bpp |
iOS
压缩 | 内存占用 |
RGB Compressed PVRTC 2 bits | 0.25 bpp (bytes/pixel) |
RGBA Compressed PVRTC 2 bits | 0.25 bpp |
RGB Compressed PVRTC 4 bits | 0.5 bpp |
RGBA Compressed PVRTC 4 bits | 0.5 bpp |
RGB 16bit | 2 bpp |
RGB 24bit | 3 bpp |
Alpha 8bit | 1 bpp |
RGBA 16bit | 2 bpp |
RGBA 32bit | 4 bpp |
Android
压缩 | 内存占用 |
RGB Compressed DXT1 | 0.5 bpp (bytes/pixel) |
RGBA Compressed DXT5 | 1 bpp |
RGB Compressed ETC1 | 0.5 bpp |
RGB Compressed PVRTC 2 bits | 0.25 bpp (bytes/pixel) |
RGBA Compressed PVRTC 2 bits | 0.25 bpp |
RGB Compressed PVRTC 4 bits | 0.5 bpp |
RGBA Compressed PVRTC 4 bits | 0.5 bpp |
RGB 16bit | 2 bpp |
RGB 24bit | 3 bpp |
Alpha 8bit | 1 bpp |
RGBA 16bit | 2 bpp |
RGBA 32bit | 4 bpp |
纹理总大小:宽 * 高 * bpp。 如果使用 Mipmap 增加 33%。
默认情况下,Unity 会在导入时对纹理进行压缩。为了加速工作,可以在首选项 (Preferences) 中关闭此功能。但在构建游戏时,所有尚未被压缩的纹理都将被重新压缩。
优化网格和动画尺寸
您可以压缩网格和导入的动画片段,以便在游戏文件中占用较小的空间。压缩可以在网格导入设置 (Mesh Import Settings) 中打开。
网格和动画压缩使用量化,这意味着它会占用较小的空间,但压缩可能产生一些误差。应通过实验确定哪个级别的压缩是模型可以接受的。
请注意:网格压缩只会产生较小的数据文件,在运行时不会使用较少内存。动画的关键帧 (Keyframe) 减少可以产生较小的数据文件,并在运行时使用较少的内存,一般都应该使用关键帧减少。
此外,您可以选择不把法线和/或切线存储在网格中,这样可以节约运行时在游戏构建和内存中占用的空间。可以在网格导入设置 (Mesh Import Settings) 中的切线空间生成 (Tangent Space Generation) 下拉菜单中进行设置。经验法则:
- 切线用于法线贴图。如果不使用法线贴图,则无需在网格中存储这些切线。
- 法线用于照明。如果某些网格不使用实时照明,则无需将法线存储在网格中。
减少播放器包含的 dll 文件
在构建播放器时(台式机、Android 或 iOS)有一点非常重要,也就是不要依赖 System.dll 或 System.Xml.dll。Unity 的播放器安装中不包含 System.dll 或 System.Xml.dll。这意味着,如果想要使用 Xml 或 System.dll 中的通用容器,那么必要的 dll 文件将包含在播放器中。这通常使得下载文件大小增加 1mb,这显然无益于播放器的分发,因而应该避免使用。如需解析一些 Xml 文件,可以使用更小的 xml 库,如 Mono.Xml.zip。大多数通用容器都包含在 mscorlib 中,Stack<> 和其他一小部分位于 System.dll。因此,应该尽量避免。
正如所见,Unity 在构建播放器时包含了 System.Xml.dll 和 System.dll。
在播放器分发包中,Unity 包含了如下的 DLL:mscorlib.dll、Boo.Lang.dll、UnityScript.Lang.dll 和 UnityEngine.dll。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论