c# - ontriggerenter - obtener la posicion de un objeto unity
¿Diferencia oculta entre los ajustes de calidad 3D de Unity? (1)
Estoy trabajando en la optimización de mi juego para iOS, y me estoy encontrando con un problema realmente extraño con la configuración de calidad en Unity3D que me tiene completamente atrapado.
Tengo 4 ajustes de configuración de calidad en el juego a través de:
Edit -> Project Settings -> Quality
Las cuatro configuraciones son: Simple, Bueno, Hermoso, Fantástico
La versión corta es que, independientemente de las opciones que establezco dentro del panel de configuración de calidad, Simple siempre tendrá un mejor rendimiento que el Bueno.
Por ejemplo, si configuro Simple and Good para tener configuraciones idénticas para todas las opciones de representación, estableciendo todo al mínimo (sombras desactivadas, sin antialias, 1/8 texturas, etc.) y pruebo el juego en un iPad comenzando con diferentes opciones de calidad predeterminadas :
Simple - ~26FPS
Good - ~6FPS
Si cambio Simple to use 1/4 Textures, y dejo Good en 1/8 texturas, todavía realiza casi lo mismo:
Simple - ~24FPS
Good - ~6FPS
Puedo ver claramente que las texturas son mejores / más detalladas en el modo Simple en 1/4, pero aún se ejecuta casi 20 FPS más rápido que en el modo Bueno, que usa texturas de 1/8 de tamaño.
Después de conectar el perfilador Unity iOS, puedo ver que cuando se ejecuta en modo Bueno, la CPU sufre una carga constante de "Sobrecarga", que no está presente en el Modo simple (con ajustes de calidad idénticos). Entonces algo está cambiando claramente cuando paso de Simple a Good, pero no parece ser algo que pueda cambiar desde el menú de configuración de calidad.
Al leer la página del manual de unidad, tengo la impresión de que las diferentes configuraciones de calidad son simplemente marcadores de posición, ya que puede agregar / eliminar opciones. Pero de mis experimentos parece que hay algo más que cambia cuando comienzo en las opciones de Simple Vs Good (u otras).
He intentado iniciar el juego en Simple / Bueno como predeterminado, y también cambiar manualmente el código (usando C # a través de QualitySettings.SetQualityLevel ) y obtengo el mismo rendimiento.
Siento que me falta algo clave, pero parece que no puedo entender esto.
Los niveles de calidad pueden generar diferencias cuando utiliza funciones que existen en niveles de calidad y que requieren algunos cálculos adicionales. Pero cuando no usa esas características, no hay diferencia entre los niveles de calidad. Si quieres mejorar tu FPS, hay algunos consejos
- Realice un atlasing de texturas para reducir las llamadas al sorteo
- Mejore los cálculos en las funciones de actualización y las transformaciones de caché utilizadas por la función de actualización.
- No busque componentes en cada cuadro, en algunos casos puede usar un patrón singleton
- No destruyas objetos en cada cuadro. Haga la agrupación de objetos.
- Mejora las emisiones de partículas y haz lo menos que puedas
- Mejora los sombreadores. Si usa dispositivos móviles, use sombreadores móviles. Por ejemplo, cambie el sombreado difuso a Móvil / Difuso.
Aquí hay algunos enlaces útiles Tutorial de video de agrupación de objetos , patrón Singleton Unity3d c #