Quantcast
Channel: 平板电脑
Viewing all articles
Browse latest Browse all 500

Consejos para configurar Unity: memoria, audio y texturas

$
0
0

En esta entrada de blog daremos consejos y trucos de optimización de memoria y para trabajar con texturas. La compilación estuvo a cargo de Steve Hughes, ingeniero de aplicaciones para computación visual de Intel. Quienes deseen conocer más información pueden leer el artículo de Steve y Cristiano (la mayoría de los consejos son válidos tanto para Windows como para Android) y mis Consejos para usar Unity con el SDK de Intel® RealSense™.

Cómo trabajar con texturas                                                                                                              

  • No cree Mipmaps para texturas a menos que sea realmente necesario.
  • Es mejor usar texturas comprimidas.
  • No establezca las texturas como legibles (CPU R/W) si no es necesario. Así se evitan copias adicionales en CPU, marcadores, etc.
  • Reduzca el tamaño de las texturas según la resolución de pantalla.
  • Pantallas pequeñas y de Android:
    • En modelos - omita el MIP superior (Quality Settings>Rendering>Texture Quality). 
    • Separe los canales RGB (se pueden comprimir) de los Alpha (no se pueden comprimir).

Consejos de diseño

  • No es necesario que los mapas normales estén a una escala 1:1 con los difusos.
  • Elimine los fotogramas clave redundantes de las animaciones (solo actualice para cambiar de gráfico).

Para modelos de malla  

  • Elimine de las mallas los canales no utilizados (en Player Settings, habilite Optimized Mesh Data).
  • Para mallas con mucho detalle en sistemas con poca RAM, establezca que Quality use maxLOD.

 Encontrará más información sobre optimización de gráficos en: Cómo planificar optimizaciones con Unity. 

Audio

  • Use el búfer de 200 k para reproducción de audio.
    • Cargue los clips cortos sin comprimir en este búfer.
    • O use AudioClip.GetData para descomprimir y luego libere el clip comprimido.

Optimización de memoria

  • Dos métodos para ver qué está consumiendo RAM.
    • Profiler.GetRuntimeMemorySize() puede encontrar objetos que consumen mucha RAM (sugerir salida al registro de depuración).
    • Busque en CIL (Common Intermediate Language) de Mono los tres tipos de asignación: Newarr, Newobj, Box.
  • Preasigne espacio de memoria en el inicio (según el historial de uso de recursos) para expandir el montón (heap) manualmente.
  • Cuando sea necesario actuar sobre la marcha, llame a Resources.UnloadAsset (si es necesario hacer la referencia al recurso) o use Resources.UnloadUnusedAssets (si la referencia no es necesaria).
  • Como por lo general solo se llama a Auto Garbage Collection de Unity cuando la pila está llena o no hay un bloque libre lo suficientemente grande, considere llamar a (System.GC..Collect) antes o después de cargar un nivel (o ponerlo en un temporizador) o limpie en los tiempos de transición.
  • Evite las funciones con grandes cantidades de asignaciones ocultas.
  • Use estructuras (se almacenan en pila) en lugar de clases (se almacenan en montón) para evitar que se fragmente la memoria.
  • Recuerde que los enumeradores reservan RAM. Y (Foreach) se reprocesa en un bloque de código que asigna un enumerador, también.
  • Por la misma razón, evite métodos anónimos y lambdas.
  • Transmita los recursos en secuencias para que consuman menos RAM y junte los recursos relacionados en paquetes de recursos en la compilación y luego envíelos en secuencias en tiempo de ejecución (asegúrese de destruirlos antes de la secuencia de paquetes de recursos o la escena siguientes).
  • No junte cadenas. No manipule las cadenas por fotograma (en cambio, agregue un interceptador para solo tener que actualizar si cambia de valor).
  • Use la clase StringBuilder para hacer cadenas, No use un arreglo en usa función que devuelva una cadena porque continuará volcando y reasignando en cada repetición del bucle.
  • Cree clases de grupos de recursos (bullets/missles) para almacenar objetos, en lugar de “new-ing” múltiple, como  
                   MyClass m – poolOfMyClass           //do stuff         poolOfMyClass.Store(m);

CRÉDITOS: parte del material incluido se tomó de: 

Más información:

  • unity
  • Unity3D
  • config
  • tips
  • tricks
  • Unity Pro
  • GC
  • texture
  • audio
  • memory error
  • buffer
  • Mesh
  • GameDev
  • 图标图像: 

  • 烹调书籍
  • 入门
  • 技术文章
  • 教程
  • 调试
  • 开发工具
  • 游戏开发
  • 图形
  • 移动性
  • 优化
  • 能效
  • 用户体验与设计
  • 英特尔® 实感™ SDK
  • 英特尔® 实感™ 技术
  • 感知计算
  • C#
  • Unity
  • 安卓*
  • 游戏开发
  • 英特尔® 实感™ 技术
  • 用户体验
  • Windows*
  • 嵌入式
  • 前置 F200 照相机
  • 笔记本电脑
  • 平板电脑
  • 桌面
  • 开发人员
  • 学生
  • 安卓*
  • Google Chrome OS*
  • Linux*
  • Microsoft Windows* 8.x
  • 包括在 RSS 中: 

    1

    Co_author: 

    steve-hughes (Intel)

    Viewing all articles
    Browse latest Browse all 500

    Trending Articles



    <script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>