Simple State - Guía del usuario de Lumberyard

Simple State

El sistema de entidades de componentes está en la versión preliminar y está sujeto a cambios.

El componente Simple State brinda una máquina con estados simples. Cada estado está representado por un nombre y ninguna entidad, una o más. Las entidades se activan tras entrar en el estado en concreto y se desactivan cuando salen de él. El componente Simple State puede estar en NullState, es decir, sin ningún estado activo.

Propiedades del componente Simple State

El componente Simple State incluye las siguientes propiedades:

Initial state (Estado inicial)

El estado es activo cuando el componente Simple State se activa por vez primera.

Reset on activate (Restablecer en activar)

Si se selecciona, Simple State vuelve al estado inicial de configuración cuando se activa y no al estado que existía antes de la desactivación.

States (Estados)

La lista de estados en este componente Simple State.

State ([0], [1], [2], etc (Estado ([0], [1], [2], etc.)

Incluye el nombre del estado y un conjunto de entidades que se activan cuando se entra en el estado y se desactivan cuando se sale del estado.

Nombre

El nombre de este estado. Indica el estado al que se debe pasar en la API de SetState.

Entidades

Lista de las entidades a las que se hace referencia en este estado.

Interfaz de bus de solicitudes EBus

Utilice las siguientes funciones de solicitud con la interfaz EBus para comunicarse con otros componentes del videojuego.

Para obtener más información acerca del uso de la interfaz de bus de eventos (EBus), consulte Trabajo con el sistema de bus de eventos (EBus).

SetState

Establece el estado activo en el estado cuyo nombre se haya indicado.

Parámetros

stateName

Interfaz de bus de notificaciones EBus

Utilice las siguientes funciones de notificación con la interfaz EBus para comunicarse con otros componentes del juego.

Para obtener más información acerca del uso de la interfaz de bus de eventos (EBus), consulte Trabajo con el sistema de bus de eventos (EBus).

OnStateChanged

Notifica que el estado ha cambiado de estado oldName a estado newName.

Parámetros

oldName

newName

Este es un ejemplo de script que utiliza la Request Bus Interface (Interfaz de bus de solicitudes).

local simplestateexample = { Properties = { TransitionInterval = 1.0, States = {"Houses", "Nope", "Lamps", "Tree", "HouseAndTree", "NoState"}, } } function simplestateexample:OnActivate() self.TransitionCountDown = self.Properties.TransitionInterval self.StateIdx = 0 self.tickBusHandler = TickBus.Connect(self) self.stateChangedHandler = SimpleStateComponentNotificationBus.Connect(self, self.entityId) Debug.Log("SimpleStateComponent activated for entity: " .. tostring(self.entityId.id)) end function simplestateexample:OnDeactivate() self.tickBusHandler:Disconnect() self.stateChangedHandler:Disconnect() end function simplestateexample:OnTick(deltaTime, timePoint) self.TransitionCountDown = self.TransitionCountDown - deltaTime if (self.TransitionCountDown < 0.0) then SimpleStateComponentRequestBus.Event.SetState(self.entityId, self.Properties.States[self.StateIdx + 1]) self.StateIdx = (self.StateIdx + 1) % table.getn(self.Properties.States) self.TransitionCountDown = self.Properties.TransitionInterval end end function simplestateexample:OnStateChanged(oldState, newState) Debug.Log("Old State: " .. (oldState or "NullState") .. " => New State: " .. (newState or "NullState")) end return simplestateexample