Добрый(утро || день|| вечер).
Пытаюсь реализовать появление сообщения на экране по нажатию курсором мышки на объект типа куб в сцене. Реализую все в C++. За исключением пожалуй контроллера для мышки. Его по мануалу реализовал в BP.
Наследуюсь от Actor.
.h файл
UFUNCTION()
void Debug(FString Msg);
UFUNCTION()
void BlockClicked(UPrimitiveComponent *ClickableComponent,FKey inKey);
private:
USceneComponent *ButtonSceneComponent;
UStaticMeshComponent *ButtonMeshComp;
UStaticMesh *ButtonStaticMesh;
UMaterial* ButtonMaterial;
.сpp файл
ATargetFloor::ATargetFloor(const FObjectInitializer & ObjectInitializer) :Super(ObjectInitializer) {
PrimaryActorTick.bCanEverTick = true;
RootComponent = ObjectInitializer.CreateDefaultSubobject<USceneComponent>(this, TEXT("RootComponent"));
ButtonSceneComponent = ObjectInitializer.CreateDefaultSubobject<USceneComponent>(this,TEXT("VisibleComponent"));
ButtonSceneComponent->AttachToComponent(RootComponent, FAttachmentTransformRules::KeepWorldTransform);
ButtonMeshComp = ObjectInitializer.CreateDefaultSubobject<UStaticMeshComponent>(this,TEXT("MeshComponent"));
ButtonMeshComp->AttachToComponent(ButtonSceneComponent, FAttachmentTransformRules::KeepWorldTransform);
ButtonStaticMesh = ConstructorHelpers::FObjectFinder<UStaticMesh>(TEXT("StaticMesh'/Game/MobileStarterContent/Mesh/ButtonBoxMesh.ButtonBoxMesh'")).Object;
if (ButtonStaticMesh != NULL) ButtonMeshComp->SetStaticMesh(ButtonStaticMesh);
ButtonMaterial = ConstructorHelpers::FObjectFinder<UMaterial>(TEXT("Material'/Game/MobileStarterContent/Materials/M_Brick_Clay_New.M_Brick_Clay_New'")).Object;
if (ButtonMaterial != NULL) ButtonMeshComp->SetMaterial(0,ButtonMaterial);
ButtonMeshComp->OnClicked.AddDynamic(this,&ATargetFloor::BlockClicked);
}
void ATargetFloor::Debug(FString Msg) {
if(GEngine) GEngine->AddOnScreenDebugMessage(-1, 1, FColor::Red, Msg);
}
void ATargetFloor::BlockClicked(UPrimitiveComponent *ClickableComponent,FKey inKey) {
Debug(TEXT("Click"));
}
Сначало я создаю root компонент иерархии. Потом к нему добавляю компонент сцены, чтобы его было видно, потом компонент меха, к нему цепляю уже статический мех. в данном случае у меня это просто коробка.Ну и материал для наглядности. Рендерится все чудненько, но вот на клик мышки никак не реагирует. Не могу понять что я делаю не так. По мануалам должно же работать.