Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Información general
Los scripts visuales no son intrínsecamente lentos, pero son significativamente más lentos que, por ejemplo, código de C#.
Al crear scripts visuales en su entorno, es mejor usarlos para conectar la funcionalidad existente, no para el trabajo pesado: hacer pegamento, no girders. La manera más sencilla de garantizar que los scripts visuales no afecten al rendimiento general de su entorno es asegurarse de que no están haciendo mucho en primer lugar.
Eventos de script de alta y baja frecuencia
Visual Scripting ofrece una amplia selección de eventos que puede usar para desencadenar flujos de script visual.
Intente evitar lo siguiente:
Al actualizar, en actualización fija, en actualización tardía y similar. Estos eventos se desencadenan con mucha frecuencia (a menudo a la misma velocidad que los fotogramas de representación) e incluso si el script no hace mucho, incluso al iniciarlo tiene una sobrecarga que puede afectar notablemente al rendimiento del entorno si ocurre en muchos lugares a la vez.
On Trigger Stay and On Collision Stay. Aunque estos eventos solo están activos en determinadas condiciones (por ejemplo, cuando un objeto de física está dentro de un volumen de desencadenador físico o tocando un colisionador), mientras que esas condiciones se dan, se desencadenarán con mucha frecuencia.
No hay ningún reemplazo preferido directo para estos eventos de alta frecuencia. No están deshabilitados, por lo que puede usarlos si es absolutamente necesario, pero le recomendamos que intente aprovechar la funcionalidad integrada, como el componente Animator, que se puede controlar mediante scripts visuales o reestructurar la lógica de script para que sea reactiva en lugar de activo, por ejemplo, mediante eventos On State Changed .
Si no puede evitar estos eventos de alta frecuencia, es posible que pueda reducir su impacto manteniendo inactivo todo el componente de Script Machine cuando no sea necesario. Otro script visual puede usar Script Machine | Set Enabled para deshabilitar y habilitar todo un grafo de script. Aunque está deshabilitado, ninguno de sus nodos de eventos se desencadena y tiene un costo en tiempo de ejecución cero.
Estos son ligeramente peligrosos para el rendimiento, pero a veces son necesarios:
- En colisión entra y en la salida de colisión. Normalmente, estos eventos se desencadenan solo una vez cuando un cuerpo físico toca el colisionador, y una vez más cuando deja de tocar. Sin embargo, a veces un cuerpo físico se queda atascado entre dos colisionadores; en ese caso, puede iniciar la vibración rápidamente hacia atrás y hacia adelante, desencadenando muchos eventos On Collision en una sucesión muy rápida. Se recomienda usar eventos on Trigger en su lugar.
Estos son correctos para usar en determinadas situaciones:
En Interval permite desencadenar flujos de script en intervalos personalizables (por ejemplo, una vez por segundo) definidos a través de su configuración intervalo . Puede usar la opción Retraso para escalonar la ejecución de diferentes eventos on Interval que tengan el mismo intervalo.
El nodo Temporizador no es un evento, pero desencadenará su puerto Tick una vez por fotograma durante la duración del temporizador una vez que se haya iniciado escribiendo su puerto De inicio . Cuando el temporizador no se está ejecutando, tiene un costo en tiempo de ejecución cero.
Intente no usar estos eventos para mantener la comprobación de si ciertas variables, propiedades o condiciones han cambiado; en su lugar, es mejor usar un evento On State Changed para escuchar los cambios a un costo inactivo cero.
Estos siempre están bien para usar:
En State Changed solo se desencadena si y cuando alguno de sus puertos de entrada cambia su valor. En el caso de las variables de script y las propiedades de componente, esto se implementa de forma muy eficaz de una manera que incurre en un costo de tiempo de ejecución cero, siempre y cuando no cambie nada.
En State Changed también se puede usar para observar entradas más complejas (por ejemplo, los resultados de un cálculo) que requieren que vuelva a evaluar la entrada una vez por fotograma para determinar si ha cambiado. Tendrá que habilitar la opción Permitir sondeo para habilitar esta característica; la interfaz de usuario de edición de scripts le informará de esto y le advertirá sobre el posible impacto en el rendimiento. Incluso así, seguirá siendo un poco más eficaz que crear un script de su propia lógica de sondeo mediante un evento Al actualizar .
En el elemento de diccionario agregado y en elemento de diccionario Se ha quitado el trabajo de forma similar y tienen un costo en tiempo de ejecución cero, siempre y cuando no cambie nada.
En El desencadenador Entrar y salir del desencadenador no tienen ninguno de los posibles peligros de rendimiento de los eventos On Collision correspondientes (ver más arriba).