Slate的输入事件可以通过IInputProcessor
处理事件的类需要继承IInputProcessor.
继承自InputPreProcessors的原因:
FSlateApplication会先处理InputPreProcessors,若不想截留事件,只需要返回false就可以
看一下InputPreProcessors类
/**
* Interface for a Slate Input Handler
*/
class SLATE_API IInputProcessor
{
public:
IInputProcessor(){};
virtual ~IInputProcessor(){}
virtual void Tick(const float DeltaTime, FSlateApplication& SlateApp, TSharedRef<ICursor> Cursor) = 0;
/** Key down input */
virtual bool HandleKeyDownEvent(FSlateApplication& SlateApp, const FKeyEvent& InKeyEvent) { return false; }
/** Key up input */
virtual bool HandleKeyUpEvent(FSlateApplication& SlateApp, const FKeyEvent& InKeyEvent) { return false; }
/** Analog axis input */
virtual bool HandleAnalogInputEvent(FSlateApplication& SlateApp, const FAnalogInputEvent& InAnalogInputEvent) { return false; }
/** Mouse movement input */
virtual bool HandleMouseMoveEvent(FSlateApplication& SlateApp, const FPointerEvent& MouseEvent) { return false; }
/** Mouse button press */
virtual bool HandleMouseButtonDownEvent( FSlateApplication& SlateApp, const FPointerEvent& MouseEvent) { return false; }
/** Mouse button release */
virtual bool HandleMouseButtonUpEvent( FSlateApplication& SlateApp, const FPointerEvent& MouseEvent) { return false; }
/** Mouse button double clicked. */
virtual bool HandleMouseButtonDoubleClickEvent(FSlateApplication& SlateApp, const FPointerEvent& MouseEvent) { return false; }
/** Called when a motion-driven device has new input */
virtual bool HandleMotionDetectedEvent(FSlateApplication& SlateApp, const FMotionEvent& MotionEvent) { return false; };
};
这里能处理各种输入事件。
若想监听PropertyEditor,可以继承FNotifyHook
属性的修改都会传入对应的UProperty