Unity 配置窍门:内存,音频和纹理
来源:互联网 发布:怎么开发一个软件 编辑:程序博客网 时间:2024/06/06 02:14
本篇博客由英特尔视觉计算部应用工程师 Steve Hughes 编写而成,主要介绍关于内存优 化和处理纹理方面的提示与技巧。 更多信息请参阅 Steve 和 Cristiano 的 文章 (大部分技巧同时适用于 Windows 和 Android)和我的Unity 与 英特尔® 实感™ SDK 使用技巧 。
处理纹理
- 除非真正需要,否则不要创建面向纹理 的 Mipmap
- 使用压缩纹理
- 除非需要,否则不要将纹理设置为可读 状态(CPU 读/写)。 这样可避免额外的 CPU 副本,标记等。
- 根据屏幕分辨率缩小纹理
- Android 和小屏幕:
- 关于模型 - 跳过 顶部的 MIP ( Quality Settings>Rendering>Texture Quality)
- 将 RGB(可压缩) 和 Alpha(不可压缩)通道分开
设计技巧
- 常见地图不需要 1:1 的比例和漫反射图。
- 删除动画中的冗余关键帧(仅进行更新以改变图形)
对于网格模型
- 删除网格中的不常用通道(在“Player”设置下方,启用 “Optimized Mesh Data”)
- 如果是低 RAM 系统中的高细节网格,请设置“Quality”以使用 “maxLOD”
如欲了解更多有关在 Unity 中优化图形的信息,请参阅: 如何使用 Unity 规划优化
音频
- 使用 200k 缓冲器支持音频回放
- 将已解压的片段加载至该缓冲器
- 或使用 AudioClip.GetData 解压,然后释放已解压的片 段
内存优化
- 有两种方法可查看是什么在占用 RAM
- Profiler.GetRuntimeMemorySize() 可以查看占用大 量 RAM 的对象(显示输出以调试日志)
- 查看单声道的 CIL( 通用中间语言)以支持 3 种分配类型 — Newarr、Newobj 和 Box
- (基于资产使用历史)在启动时预分配内存空间,以手动扩展内存堆。
- 如有动态需求,调用 Resources.UnloadAsset (如果资产仍然需要引用)或使 用 Resources.UnloadUnusedAssets(针对未引用的资产)
- 由于Unity 的 “自动垃圾回收”通常只在内存堆已满或没有足够大的自由块的情况下才被调用 ,所以在进行层加载前后考虑调用 (System.GC..Collect),否则转换期间会出现清空现象。
- 避免使用包含大 量隐藏分配的函数
- 使用结构(保存在 堆栈上),而非类(保存在内存堆上),以避免出现内存碎片。
- 请记住,模拟器可 分配 RAM。 而且,(Foreach) 也可重新处理成可分配模拟器的代码块。
- 出于相同原因,请 避免使用匿名方法和 Lambda。
- 流资产占用的 RAM 较少,在构建时将相关资产收集至资产束,然后在运行时流 输出这些资产束。 (务必在下个场景或资产束流之前将其破坏)。
- 不要将字符串加在一起。 不要操作每帧字 符串(而是添加一个限制,以便您在它更改数值时仅进行升级。)
- 使用 StringBuilder 类生成字符串。不要在会返回字符串的函数内使用阵列,因为它将在循环内每 次都进行转储和重新分配。
创建资产池类(子弹/导弹)以保存对象, 而非多个 new-ing,比如:
MyClass m – poolOfMyClass //do stuff poolOfMyClass.Store(m);
致谢名单:以上部分内容来源于:
- Unity3.com 中的 内存资源
- Andrew Frey -减少 Unity 中的内存使用,C# AND .NET/MONO
Gamasutra: 面向开发人员的 C# 内存管理(第 1 部分,共 3 部分)
如欲了解更多信息,请访问:
- https://software.intel.com/zh- cn/node/542152 (大部分技巧同时适用于 Windows 和 Android)
- Unity 与英特尔® 实感™ SDK 使用技巧 。
0 0
- Unity 配置窍门:内存,音频和纹理
- Unity播视频和音频
- unity之测试题和音频
- Unity 音频
- 纹理内存
- 纹理内存
- unity shader 固定管线实例(二) 光照 颜色和纹理
- CUDA学习日志:常量内存和纹理内存
- CUDA学习日志:常量内存和纹理内存
- unity 实时重复纹理
- Unity 纹理格式
- unity shader:初探纹理
- unity shader:深度纹理
- Unity加载和内存管理机制
- Unity加载和内存管理机制
- Unity内存申请和释放
- unity内存和性能优化
- Unity内存申请和释放
- Lintcode 452.删除链表中的元素
- 欢迎使用CSDN-markdown编辑器
- Linux终端得到root权限
- Android设备的蓝牙通信
- User-Agent详解
- Unity 配置窍门:内存,音频和纹理
- 24种设计模式与7大原则
- [leetcode]345. Reverse Vowels of a String
- react使用小记1
- iOS利用Xcode制作静态库和动态库
- Mysql 执行外部脚本
- Java经典算法——窃贼问题
- 两个host上的qemu VM使用bridge互通
- 文章标题