Saltar al contenido principal

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étodoRetornoDescripción
GameObject.Find(name)enteroEncuentra un GameObject por nombre exacto, incluidos objetos inactivos o -1.
GameObject.Exists(gameObjectId)booleanoComprueba si un ID es válido.
GameObject.GetName(gameObjectId)cadena o nilLee el nombre visible del GameObject.
GameObject.IsActive(gameObjectId)booleano o nilLee el estado activo.
GameObject.SetActive(gameObjectId, active)booleanoCambia 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étodoRetornoDescripción
GameObject.CompareTag(gameObjectId, tag)booleanoCompara la etiqueta preprocesada sin asignar.
GameObject.GetLayer(gameObjectId)enteroDevuelve la capa física/de renderizado.
GameObject.SetLayer(gameObjectId, layer)booleanoEstablece 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.