Quantcast
Viewing all articles
Browse latest Browse all 1853

Unity 配置窍门:内存,音频和纹理

本篇博客由英特尔视觉计算部应用工程师 Steve Hughes 编写而成,主要介绍关于内存优 化和处理纹理方面的提示与技巧。 更多信息请参阅 Steve 和 Cristiano 的 文章(大部分技巧同时适用于 Windows 和 Android)和我的 Unity 与英特尔® 实感™ SDK 使用技巧

处理纹理                                                                                                              

  • 除非真正需要,否则不要创建面向纹理 的 Mipmap
  • 使用压缩纹理
  • 除非需要,否则不要将纹理设置为可读 状态(CPU 读/写)。 这样可避免额外的 CPU 副本,标记等。
  • 根据屏幕分辨率缩小纹理
  • Android 和小屏幕:
    • 关于模型 - 跳过 顶部的 MIP (Quality Settings>Rendering>Texture Quality) 
    • 将 RGB(可压缩) 和 Alpha(不可压缩)通道分开
Image may be NSFW.
Clik here to view.

设计技巧

  • 常见地图不需要 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);

致谢名单:以上部分内容来源于: 

如欲了解更多信息,请访问:

  • unity
  • Unity3D
  • config
  • tips
  • tricks
  • Unity Pro
  • GC
  • texture
  • audio
  • memory error
  • buffer
  • Mesh
  • GameDev
  • Immagine icona: 

    Image may be NSFW.
    Clik here to view.
  • Libri di ricette
  • Per iniziare
  • Articolo tecnico
  • Tutorial
  • Debugging
  • Strumenti di sviluppo
  • Sviluppo di videogame
  • Grafica
  • Dispositivi mobili
  • Ottimizzazione
  • Efficienza energetica
  • Esperienza utente e progettazione
  • SDK Intel® RealSense™
  • Tecnologia Intel® RealSense™
  • Computing percettivo
  • C#
  • Unity
  • Android*
  • Sviluppo di videogame
  • Tecnologia Intel® RealSense™
  • Esperienza utente
  • Windows*
  • Embedded
  • Laptop
  • Tablet
  • Desktop
  • Sviluppatori
  • Studenti
  • Android*
  • Google Chrome OS*
  • Linux*
  • Microsoft Windows* 8.x
  • Includere in RSS: 

    1

    Co_author: 

    steve-hughes (Intel)
    Hai Shen (Intel)

    Viewing all articles
    Browse latest Browse all 1853

    Trending Articles