GameObject
GameObject proporciona búsqueda de escenas, control de estado activo, etiquetas, capas y llamadas limitadas entre Lua Behaviours. Los ID son enteros propiedad de la escena; los ID resueltos en caché y los validan con GameObject.Exists cuando la vida útil puede haber cambiado.
Búsqueda y estado
| Método | Retorno | Descripción |
|---|---|---|
GameObject.Find(name) | entero | Encuentra un GameObject por nombre exacto, incluidos objetos inactivos o -1. |
GameObject.Exists(gameObjectId) | booleano | Comprueba si un ID es válido. |
GameObject.GetName(gameObjectId) | cadena o nil | Lee el nombre visible del GameObject. |
GameObject.IsActive(gameObjectId) | booleano o nil | Lee el estado activo. |
GameObject.SetActive(gameObjectId, active) | booleano | Cambia el estado activo. |
El cambio de estado activo envía OnEnable o OnDisable solo cuando el estado cambia realmente.
local gateGameObjectId = -1
function Start(gameObjectId)
gateGameObjectId = GameObject.Find("Security Gate")
if not GameObject.Exists(gateGameObjectId) then
Log.Print("Security Gate was not found")
end
end
function OpenGate()
if GameObject.Exists(gateGameObjectId) then
GameObject.SetActive(gateGameObjectId, false)
end
end
Etiquetas y capas
| Método | Retorno | Descripción |
|---|---|---|
GameObject.CompareTag(gameObjectId, tag) | booleano | Compara la etiqueta preprocesada sin asignar. |
GameObject.GetLayer(gameObjectId) | entero | Devuelve la capa física/de renderizado. |
GameObject.SetLayer(gameObjectId, layer) | booleano | Establece una capa dentro de la gama de preprocesados del proyecto. |
Usa CompareTag en las callbacks de colisión en lugar de leer y comparar nombres. Las capas también son aceptadas por Physics.Raycast a través de su máscara de capa opcional.
Llamando a otro Lua Behaviour
GameObject.Invoke(
targetGameObjectId,
"Open",
sourceGameObjectId,
0,
"keycard",
"accepted"
)
GameObject.Invoke devuelve false cuando el destino, Lua Behaviour o la función no existen o la llamada no se puede ejecutar dentro del presupuesto de scripting. Admite hasta dos argumentos enteros y dos argumentos de cadena después del nombre de la función. La función de destino recibe primero su propio ID de GameObject:
function Open(gameObjectId, sourceGameObjectId, unusedValue, itemName, result)
Log.Print(itemName .. " was " .. result)
end
Los eventos de secuencia de comandos de IU Buttons, Interactables y Timeline utilizan el mismo modelo de callback de nombre exacto. Los nombres de callback personalizados están definidos por el proyecto; el ciclo de vida del motor y los nombres de API siguen siendo PascalCase.
GameObject.Find puede encontrar objetos inactivos. Usa GameObject.IsActive cuando necesite verificar su estado. Mantén nombres únicos porque la búsqueda devuelve la primera coincidencia y vuelva a encontrar objetos después de cambiar de escena.