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.
<addon name="wiki_example">
<environment type="menus">
<file name="ui/wiki_example.lua" />
</environment>
</addon>Una ventana personalizada#
Usar la Guía de la ventana del ayudante para texto y botones, o un API de configuración 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ú.
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.
WikiPanel = {}
local instance = WikiPanel
RegisterEvent("Wiki.Example", function(_, payload)
if WikiPanel ~= instance then return end
-- Обработка относится к актуальному экземпляру.
end)Lecturas relacionadas#
Lua ↔ MD, ventanas personalizadas y extensiones estándar de la UI.