--- title: Lua en X4 UI summary: Registro de archivos, orden de inicialización, ciclo de vida de llamada y comportamiento de la UI sensible. section: ui kind: guide status: reference updated: 2026-10-22 tags: ["X4","modding","lua","ui"] sources: ["https://wiki.egosoft.com/X4%20Foundations%20Wiki/Modding%20Support/"] --- ## Registrar los archivos Declarar archivos UI en `ui.xml`, colocar definiciones compartidas antes de los módulos que las utilizan. Declarar las cesiones de terceros y verificar sus versiones. El mundo y los menús pueden no estar listos cuando el archivo está cargado; registrar callbacks y leer una nave existente son diferentes etapas. ```xml ``` ## Una ventana personalizada Usar la [Guía de la ventana del ayudante](wiki:create-ui) para texto y botones, o un [API de configuración](wiki:ui-settings) una nueva interfaz puede mantenerse sola; una extensión de una acción existente debería comenzar desde el [devolución de llamada estándar del menú](wiki:extend-ui). ## No bloquear la renderización Los manipuladores deben regresar rápidamente. Esperar en un bucle congela a UI. Utilice un evento y un resultado separado para los cambios del mundo en lugar de repetir la operación en cada actualización de la mesa. ## Ciclo de vida Instale los manejadores una vez por contexto. Volver a hacer referencias después de cargar o reconstruir el menú, y evite acumular envolturas. El ejemplo rechaza las callbacks de una instancia de adaptador obsoleta. Esa comprobación no desregistrar el manejador; frames libres y estado transitorio por separado. ```lua WikiPanel = {} local instance = WikiPanel RegisterEvent("Wiki.Example", function(_, payload) if WikiPanel ~= instance then return end -- Обработка относится к актуальному экземпляру. end) ``` ## Lecturas relacionadas [Lua ↔ MD](wiki:md-lua-bridge), [ventanas personalizadas](wiki:create-ui) y [extensiones estándar de la UI](wiki:extend-ui).