Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Consejos para trabajar con Modo de componente
Consulte los siguientes consejos para añadir un Modo de componente a su componente.
Gestión de entrada adicional
Si desea gestionar eventos de ratón de manera específica (por ejemplo, sin utilizar
manipuladores), puede anular HandleMouseInteraction
, que forma parte de la clase EditorBaseComponentMode
que se define en el ComponentModeRequestBus
.
Esta función HandleMouseInteraction
se llama cada vez que se produce un evento de ratón. El MouseInteractionEvent
, que se transfiere como argumento para la función, contiene información como el rayo
de selección del ratón, la posición en el espacio de la pantalla, teclas de modificador
y botones que se pulsan.
// EditorBaseComponentMode void Refresh() override; bool HandleMouseInteraction( const AzToolsFramework::ViewportInteraction::MouseInteractionEvent& mouseInteraction) override;
Dibujo adicional
Si desea añadir dibujo de depuración adicional en Modo de componente, puede implementar
AzFramework::EntityDebugDisplayEventBus
y, a continuación, anular DisplayEntityViewport
. Recuerde conectar el EntityDebugDisplayEventBus
en el constructor de Modo de componente y desconectarlo en el destructor.
Esto puede resultar útil para dibujo adicional para una entidad y sus componentes.
El EntityDebugDisplayEventBus
solo lo dirige EntityId
. Es posible que surjan problemas a la hora de trabajar con varios componentes del
mismo tipo en una entidad determinada.
Consulte el siguiente ejemplo para el archivo .h
.
// EditorPointLightComponentMode.h // AzFramework::EntityDebugDisplayEventBus void DisplayEntityViewport( const AzFramework::ViewportInfo& viewportInfo, AzFramework::DebugDisplayRequests& debugDisplay) override;
Consulte el siguiente ejemplo para el archivo de implementación .cpp
.
// EditorPointLightComponentMode.cpp EditorPointLightComponentMode::EditorPointLightComponentMode( const AZ::EntityComponentIdPair& entityComponentIdPair, AZ::Uuid componentType) : EditorBaseComponentMode(entityComponentIdPair, componentType) { ... AzFramework::EntityDebugDisplayEventBus::Handler::BusConnect(GetEntityId()); } EditorPointLightComponentMode::~EditorPointLightComponentMode() { AzFramework::EntityDebugDisplayEventBus::Handler::BusDisconnect(); ... } void EditorPointLightComponentMode::DisplayEntityViewport( const AzFramework::ViewportInfo& /*viewportInfo*/, AzFramework::DebugDisplayRequests& debugDisplay) { ... }