Saltar al contenido principal

Referencia del entorno de ejecución de scripts

Polygon Engine ejecuta bytecode Lua precompilado en una máquina virtual sin parser en PS1. Liberar tiras de información de depuración; Depuración conserva la información de línea de origen. El editor refleja las tablas públicas y el comportamiento del ciclo de vida para una iteración rápida, mientras que la compilación valida el código fuente, el código de bytes, el uso de la API y los límites configurados.

Límites predeterminados de Project​

ConfiguraciónDefault de proyecto nuevoLímite de tiempo de ejecución
Lua heap256 KBConfigurable desde 64 KB hasta el límite de 512 KB
Individual script64 KBMáximo por script compilado
Lua Behaviours32Fijo máximo cargado en una escena
Instructions per callback50,000Guardia verificado por el gancho de instrucción de VM
Standard librariesRestringidoEl conjunto PS1 seguro siempre se aplica
Debug libraryOffOpción de creación de depuración-construir solamente

Project Settings puede reducir los límites para reservar memoria o capturar scripts costosos antes. Aumentar un valor de proyecto no puede exceder el límite de tiempo de ejecución. Los informes de presupuesto incluyen código fuente/byte de Lua, heap, recuento de Lua Behaviour y uso de propiedad expuesta.

Patrón de script seguro​

moveSpeed = 2.5
scoreTextName = "Score Text"

local scoreTextId = -1
local score = 0

local function refresh_score()
if scoreTextId >= 0 then
Text.SetText(scoreTextId, "SCORE " .. tostring(score))
end
end

function Start(gameObjectId)
scoreTextId = UI.Find(scoreTextName)
score = PlayerPrefs.GetInt("score", 0)
refresh_score()
end

function Update(gameObjectId, deltaTime)
local moveX, moveY = Input.GetAxis("Move")
CharacterController.Move(
gameObjectId,
moveX * moveSpeed * deltaTime,
0.0,
-moveY * moveSpeed * deltaTime
)

if Input.GetButtonDown("Interact") then
score = score + 10
refresh_score()
if not PlayerPrefs.SetInt("score", score) or not PlayerPrefs.Save() then
Log.Print("Save failed: " .. SaveData.GetLastError())
end
end
end

Esto almacena en caché la búsqueda de la interfaz de usuario, utiliza una acción semántica, evita la asignación de texto cuadro a cuadro cuando la puntuación no cambia, comprueba los fallos de persistencia y se mueve a través de la Character Controller.

Superficie Lua estándar​

El tiempo de ejecución incluye las funciones de conversión de núcleo, iteración, llamada protegida, metatabla y acceso sin procesar, además de las porciones limitadas de string, math, table, coroutine y utf8. No expone archivos, sistema operativo, carga de paquetes, módulos nativos dinámicos o un entorno de depuración general en compilaciones de PS1.

Trate las definiciones de servidor de idioma generadas como el contrato de motor invocable, no como el permiso para usar las instalaciones de Lua de escritorio. Valida cualquier función de biblioteca estándar de la que dependa a través del espacio de trabajo administrado del proyecto y una compilación de PS1.

Lista de comprobación de rendimiento​

  • La caché GameObject.Find, UI.Find y Canvas.Find da como resultado Start.
  • Usa API de retorno escalar como Physics.Raycast en rutas calientes.
  • Evita la concatenación de cadenas por cuadro, la construcción de tablas y los escaneos de nombres de escenas completas.
  • Mantén cortas las llamadas de colisión, interfaz de usuario, línea de tiempo y finalización.
  • Divide Lua Behaviours grande por responsabilidad cuando sus propiedades de ciclo de vida, estado o Inspector ya no formen un componente coherente.
  • Validar rutas de falla para GameObjects, componentes, recursos, controladores y tarjetas de memoria que faltan.
  • Mida la escena de lanzamiento más grande en hardware; los presupuestos de instrucciones y memoria no prueban el tiempo de cuadro.

Consulta Flujo de trabajo de programación y Límites de ejecución de PS1.

Límites de ejecución de Lua​

Los proyectos nuevos permiten 256 KiB de memoria Lua compartida por todos los scripts, con un límite predeterminado de 50,000 instrucciones por llamada. Configura estos valores en Project Settings y mantén el límite de instrucciones por encima de cero. El límite es una comprobación de seguridad, no un objetivo de tasa de cuadros: mide el rendimiento del juego y mantén cortos los callbacks.

Si una callback excede un límite, inspecciona el Console y reduce su trabajo. Evita las tablas o cadenas grandes al inicio, las búsquedas de objetos en caché y distribuya el trabajo costoso entre las actualizaciones. Usa una compilación de depuración cuando necesites información de línea de origen en un error de script; usa Release para el juego final.

Consulta Panel PS1 Budget para obtener perfiles y Referencia de la API de Lua para obtener argumentos de función y valores de retorno.