MainLoop

Hereda: Object

Heredado por: SceneTree

Clase base abstracta para el bucle principal del juego.

Descripción

MainLoop is the abstract base class for a Godot project's game loop. It is inherited by SceneTree, which is the default game loop implementation used in Godot projects, though it is also possible to write and use one's own MainLoop subclass instead of the scene tree.

Upon the application start, a MainLoop implementation must be provided to the OS; otherwise, the application will exit. This happens automatically (and a SceneTree is created) unless a MainLoop Script is provided from the command line (with e.g. godot -s my_loop.gd) or the ProjectSettings.application/run/main_loop_type project setting is overwritten.

Here is an example script implementing a simple MainLoop:

class_name CustomMainLoop
extends MainLoop

var time_elapsed = 0

func _initialize():
    print("Initialized:")
    print("  Starting time: %s" % str(time_elapsed))

func _process(delta):
    time_elapsed += delta
    # Return true to end the main loop.
    return Input.get_mouse_button_mask() != 0 || Input.is_key_pressed(KEY_ESCAPE)

func _finalize():
    print("Finalized:")
    print("  End time: %s" % str(time_elapsed))

Métodos

void

_finalize() virtual

void

_initialize() virtual

bool

_physics_process(delta: float) virtual

bool

_process(delta: float) virtual


Señales

on_request_permissions_result(permission: String, granted: bool) 🔗

Emitida cuando un usuario responde a una solicitud de permiso.


Constantes

NOTIFICATION_OS_MEMORY_WARNING = 2009 🔗

Notificación recibida del sistema operativo cuando la aplicación supera su memoria asignada.

Específico de la plataforma iOS.

NOTIFICATION_TRANSLATION_CHANGED = 2010 🔗

Notificación recibida cuando las traducciones pueden haber cambiado. Puede ser activada por el usuario al cambiar el locale. Puede utilizarse para responder a los cambios de idioma, por ejemplo, para cambiar las strings de la interfaz de usuario sobre la marcha. Útil cuando se trabaja con el soporte de traducción incorporado, como Object.tr().

NOTIFICATION_WM_ABOUT = 2011 🔗

Notificación recibida del sistema operativo cuando se envía una solicitud de información "Acerca de".

Específico de la plataforma MacOS.

NOTIFICATION_CRASH = 2012 🔗

Notificación recibida del controlador de fallos de Godot cuando el motor está a punto de fallar.

Implementado en las plataformas de escritorio si el manejador de fallos está habilitado.

NOTIFICATION_OS_IME_UPDATE = 2013 🔗

Notificación recibida del sistema operativo cuando se produce una actualización del motor del método de entrada (por ejemplo, cambio de la posición del cursor de la IME o de la string de composición).

Específico de la plataforma MacOS.

NOTIFICATION_APPLICATION_RESUMED = 2014 🔗

Notificación recibida del sistema operativo cuando se reanuda la aplicación.

Específica de las plataformas Android e iOS.

NOTIFICATION_APPLICATION_PAUSED = 2015 🔗

Notificación recibida del sistema operativo cuando la aplicación se pausa.

Específica de las plataformas Android e iOS.

Nota: En iOS, solo tienes aproximadamente 5 segundos para finalizar una tarea iniciada por esta señal. Si superas esta asignación, iOS cerrará la aplicación en lugar de pausarla.

NOTIFICATION_APPLICATION_FOCUS_IN = 2016 🔗

Notificación recibida del sistema operativo cuando la aplicación está enfocada, es decir, cuando se cambia el foco del escritorio del sistema operativo o de una aplicación de terceros a cualquier ventana abierta de la instancia de Godot.

Implementado en plataformas de escritorio y móviles.

NOTIFICATION_APPLICATION_FOCUS_OUT = 2017 🔗

Notificación recibida del sistema operativo cuando la aplicación pierde el foco, es decir, cuando se cambia el foco de cualquier ventana abierta de la instancia de Godot al escritorio del sistema operativo o a una aplicación de terceros.

Implementado en plataformas de escritorio y móviles.

NOTIFICATION_TEXT_SERVER_CHANGED = 2018 🔗

Notificación recibida cuando se cambia el servidor de texto.


Descripciones de Métodos

void _finalize() virtual 🔗

Llamada previa a la salida del programa.


void _initialize() virtual 🔗

Llamado una vez durante la inicialización.


bool _physics_process(delta: float) virtual 🔗

Called each physics tick. delta is the logical time between physics ticks in seconds and is equal to Engine.time_scale / Engine.physics_ticks_per_second. Equivalent to Node._physics_process().

If implemented, the method must return a boolean value. true ends the main loop, while false lets it proceed to the next step.

Note: _physics_process() may be called up to Engine.max_physics_steps_per_frame times per (idle) frame. This step limit may be reached when the engine is suffering performance issues.

Note: Accumulated delta may diverge from real world seconds.


bool _process(delta: float) virtual 🔗

Se llama en cada fotograma inactivo, antes de la renderización, y después de que se hayan procesado los ciclos de física. delta es el tiempo entre fotogramas en segundos. Equivalente a Node._process().

Si se implementa, el método debe devolver un valor booleano. true termina el bucle principal, mientras que false permite que continúe al siguiente fotograma.

Nota: Cuando el motor está sufriendo y la velocidad de fotogramas se reduce, delta aumentará. Cuando delta aumenta, se limita a un máximo de Engine.time_scale * Engine.max_physics_steps_per_frame / Engine.physics_ticks_per_second. Como resultado, el delta acumulado puede no representar el tiempo del mundo real.

Nota: Cuando --fixed-fps está habilitado o el motor se está ejecutando en modo Movie Maker (ver MovieWriter), el proceso delta siempre será el mismo para cada fotograma, independientemente de la cantidad de tiempo que tarde el fotograma en renderizarse.

Nota: El delta de fotograma puede ser post-procesado por OS.delta_smoothing si esto está habilitado para el proyecto.