Diferencias entre Update y FixedUpdate en Unity

Introducción


En este artícu­lo vamos a analizar la eje­cu­ción de un pro­gra­ma sim­ple en Uni­ty para enten­der cuáles son las difer­en­cias entre Update y FixedUp­date en Unity.

Para ver estas difer­en­cias mon­té una esce­na sim­ple de Uni­ty con dos cubos y algunos scripts de pro­gra­mación, te puedes descar­gar el paque­te de Uni­ty en este artículo.

Diferencias entre UPDATE y FIXEDUPDATE en UNITY
👉

POR FAVOR CONSIDERA SUSCRIBIRTE AL CANAL

MIRA ESTE DESCABELLADO EXPERIMENTO

Paquete para Descargar


A con­tin­uación puedes descar­gar un paque­te de Uni­ty para impor­tar y ver cómo se com­por­tan dos obje­tos a los que se les apli­ca una traslación en el méto­do Update en un caso y en el méto­do FixedUp­date en el otro.

Difer­en­cia entre Update y FixedUp­date — Paque­te Unity

Si no estás seguro de cómo impor­tar un paque­te en Uni­ty te invi­to a ver este artícu­lo o este video en el que se expli­ca de man­era resum­i­da cómo impor­tar y expor­tar paque­tes en Uni­ty.

Qué son los métodos Update y FixedUpdate


Para empezar, los méto­dos Update y FixedUp­date son fun­ciones que pertenecen a la clase MonoBe­hav­iour y que se eje­cu­tarán de man­era automáti­ca y cícli­ca cuan­do colo­camos esos Scripts en la jerarquía.

Resumen de las diferencias entre Update y FixedUpdate en Unity


1. La can­ti­dad de eje­cu­ciones por segun­do de Update es vari­able, mien­tras que la can­ti­dad de eje­cu­ciones por segun­do de FixedUp­date es fija.

2. En gen­er­al no se tiene con­trol sobre las eje­cu­ciones de Update, depen­derán del rendimien­to de cada orden­dor. Para FixedUp­date podemos mod­i­ficar el Time Step en Project Set­tings > Time, por defec­to es 0.02 segun­dos (20 milisegundos).

3. Ambas fun­ciones se uti­lizan para hac­er cam­bios en el tiem­po, de lo ante­ri­or se con­cluye que Update se uti­liza para la parte lóg­i­ca y FixedUp­date para la parte físi­ca, movimien­tos y ani­ma­ciones, es decir acciones que deben cam­biar de man­era reg­u­lar en el tiempo.

Cómo ver las diferencias entre Update y FixedUpdate usando el paquete para descargar


Al impor­tar el paque­te van a ten­er una car­pe­ta que con­tiene todos los archivos nece­sar­ios, lo que deben hac­er es abrir la esce­na que está den­tro de la car­pe­ta, lla­ma­da "Update­FixedUp­date".

Den­tro de la esce­na ten­emos un con­ta­dor de frames por segun­do para saber la tasa de refres­co del juego en todo momento. 

Ten­emos dos Cubos lla­ma­dos Update y FixedUp­date, ambos tienen asig­na­do un script lla­ma­do "Update­FixedUp­date" en el que se define una veloci­dad para el movimien­to de los cubos y una vari­able lóg­i­ca que va a deter­mi­nar si el movimien­to del cubo se hace en la fun­ción Update o en la fun­ción FixedUpdate. 

Luego hay otro GameOb­ject lla­ma­do Sat­u­ra­tion que tiene asig­na­do un Script lla­ma­do "Cre­ateOb­jects­For­ev­er", cuan­do este Script se active comen­zará a instan­ciar cubos como hijos del Script Sat­u­ra­tion de man­era inin­ter­rump­i­da, lo que oca­sion­ará poco a poco oca­sion­ará una sobre­car­ga de proce­samien­to y con un poco de análi­sis nos per­mi­tirá enten­der las difer­en­cias entre Update y FixedUp­date en Unity.

Procedimiento para el Análisis


Primera Prueba sin Sobrecarga

Ini­cial­mente nos ase­gu­ramos que el GameOb­ject Sat­u­ra­tion esté desha­bil­i­ta­do o su Script "Cre­ateOb­jects­For­ev­er" esté desha­bil­i­ta­do, para que ini­cial­mente no se pro­duz­ca la sat­u­ración del juego.

Nos ase­gu­ramos que ambos obje­tos ten­gan la mis­ma veloci­dad en su Script Update­FixedUp­date y que en el obje­to Update la casil­la "Use Fixed Update" esté des­mar­ca­da, mien­tras que en el obje­to FixedUp­date, esa casil­la esté marcada.

Entramos en el modo juego y obser­va­mos cómo se com­por­tan los cubos. En mi caso se obser­va que el cubo que se mueve uti­lizan­do el méto­do Update lo hace de man­era más ráp­i­da que el cubo que se mueve en el méto­do FixedUp­date. El cubo que se mueve con Update lo hace a más del doble de veloci­dad y a veces se mueve más rápi­do y otras más lento, mien­tras que el otro cubo se mueve de man­era reg­u­lar en el tiempo.

Segunda Prueba con Sobrecarga

Aho­ra acti­va­mos el obje­to Sat­u­ra­tion (o su script), para acti­var la instan­ciación de los objetos.

Al entrar en el Modo Juego se obser­va que los FPS del juego comien­zan a descen­der grad­ual­mente. Este cam­bio puede ser aún más drás­ti­co si selec­cionamos el obje­to Sat­u­ra­tion en la jer­ar­quía y si lo esta­mos vien­do de cer­ca en la pes­taña Edi­tor. Pero lo más impor­tante que nota­mos es que la veloci­dad del cubo que se mueve con Update comien­za a dis­minuir, mien­tras más es la sobre­car­ga, más lento se mueve el cubo, has­ta que en un momen­to es super­a­do por el cubo que se mueve con FixedUpdate.

Esto nos indi­ca que a may­or sat­u­ración de proce­samien­to, la fun­ción Update se eje­cu­ta menos veces por segun­do, mien­tras que la fun­ción FixedUp­date se eje­cu­ta de man­era reg­u­lar en el tiem­po y, pese a que el juego comience a ten­er lag, los movimien­tos serán proporcionales.

YouTube
Scroll al inicio
Secured By miniOrange