Descripción general de la programación en Lua
Polygon Engine usa Lua Behaviours para la lógica del proyecto. Cada Lua Behaviour se asigna a un GameObject y recibe su ID numérico estable. Play Mode del editor y el entorno de ejecución de PlayStation exponen la misma API pública, con distinción entre mayúsculas y minúsculas.
Ciclo de vida
Define solo las callbacks que necesita el script:
function Awake(gameObjectId) end
function OnEnable(gameObjectId) end
function Start(gameObjectId) end
function FixedUpdate(gameObjectId, fixedDeltaTime) end
function Update(gameObjectId, deltaTime) end
function LateUpdate(gameObjectId, deltaTime) end
function OnCollisionEnter(gameObjectId, otherGameObjectId) end
function OnCollisionStay(gameObjectId, otherGameObjectId) end
function OnCollisionExit(gameObjectId, otherGameObjectId) end
function OnTriggerEnter(gameObjectId, otherGameObjectId) end
function OnTriggerStay(gameObjectId, otherGameObjectId) end
function OnTriggerExit(gameObjectId, otherGameObjectId) end
function OnDisable(gameObjectId) end
function OnDestroy(gameObjectId) end
Awake se ejecuta una vez después de las cargas de Lua Behaviour. OnEnable se ejecuta cada vez que se activa, y Start se ejecuta antes de su primer Update. FixedUpdate utiliza el paso de simulación de 30 Hz limitado. Las callbacks de colisión y activación requieren la configuración Collider correspondiente. OnDestroy se ejecuta antes de que se libere el entorno de script durante el desmontaje o una transición de escena.
Propiedades expuestas
Declaraciones escalares de nivel superior antes de que la primera función se convierta en campos Inspector:
moveSpeed = 3.0
doorGameObjectId = -1
promptTextName = "Prompt Text"
El editor conserva los valores sobrescritos de cada GameObject. Usa propiedades expuestas para las referencias de escena y los ajustes, en lugar de escribir ID directamente en distintas partes del script.
Guión mínimo
rotationSpeed = 30.0
function Update(gameObjectId, deltaTime)
Transform.RotateY(gameObjectId, rotationSpeed * deltaTime)
end
Input y Ejemplo de Colisión
moveSpeed = 2.0
function Start(gameObjectId)
Log.Print(GameObject.GetName(gameObjectId) .. " ready")
end
function Update(gameObjectId, deltaTime)
if Input.GetButton(Input.RIGHT) then
Transform.Translate(gameObjectId, moveSpeed * deltaTime, 0.0, 0.0)
end
end
function OnCollisionEnter(gameObjectId, otherGameObjectId)
Log.Print("Touched " .. GameObject.GetName(otherGameObjectId))
end
Familias API
| Zona | Mesas públicas |
|---|---|
| Núcleo | GameObject, Transform, Time, Log, Engine |
| Input y comentarios | Input, PlayerInput, Rumble |
| Physics y movimiento | Collider, Physics, CharacterController |
| Presentación de escena | Camera, Light, AudioSource, Music, ParticleSystem |
| Animation | TransformAnimator, Animator, Animation, Timeline |
| Mundo | SceneManager, NavMesh, NavMeshAgent, Portal, Interactable |
| UI | UI, Canvas, Text, Image, Button, RectTransform, Graphic, Selectable, ProgressBar |
| Persistencia | PlayerPrefs, SaveData |
Consulta Resumen de la API para cada método y constante, luego usa las páginas de tema para obtener ejemplos y requisitos de componentes.
Reglas de tiempo de ejecución
- La caché GameObject y los ID de UI en lugar de realizar búsquedas de nombres en cada cuadro.
- Trate a
false,nily-1como resultados normales de fallas y valida el componente requerido antes de usar su API. - Prefiere las acciones semánticas de Input como
"Move"y"Interact"a los botones físicos para un juego reemparejable. - Limita el trabajo de los callbacks del ciclo de vida y evita crear cadenas y tablas temporales en cada cuadro.
- Ejecuta Validate Project, Show PS1 Budget y Build > Tools & Diagnostics > Build with Readiness Checks, luego prueba el CUE de Release en la ruta de hardware de destino.
Consulta Flujo de trabajo de programación, Referencia del entorno de ejecución de scripts y Límites de ejecución de PS1.