Unreal Engine 4 http://uengine.ru/forum/ |
|
OnClicked.AddDynamic(this, &Function); http://uengine.ru/forum/viewtopic.php?f=19&t=4484 |
Страница 1 из 1 |
Автор: | zAvrr [ 07 фев 2017, 23:35 ] |
Заголовок сообщения: | OnClicked.AddDynamic(this, &Function); |
Вечер добрый, делаю простую игрушку по видео урокам. Наткнулся на проблему, на видео все компилируется и работает, а у меня ошибка. Пролистав темы на англоязычных форумах, пришел к выводу, что виновата версия движка, мол с одним из обновлений как то иначе надо работать с AddDynamic(), но как именно я не понял. Проблема в следующем: Код: .h UFUNCTION() void blockClicked(UPrimitiveComponent* ClickedComp); Последняя строчка метода void AMyBox::createBlock(): Код: .cpp
void AMyBox::blockClicked(UPrimitiveComponent* ClickedComp) { randColor(); } void AMyBox::createBlock() { DummyRoot = CreateDefaultSubobject<USceneComponent>(TEXT("Dummy0")); RootComponent = DummyRoot; class UStaticMesh* BlockStatickMesh; BlockStatickMesh = ConstructorHelpers::FObjectFinderOptional<UStaticMesh>(TEXT("StaticMesh'/Game/MyBlock.MyBlock'")).Get(); BlockMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("BlockMesh0")); BlockMesh->SetStaticMesh(BlockStatickMesh); TempMaterial = ConstructorHelpers::FObjectFinderOptional<UMaterial>(TEXT("Material'/Game/Blue.Blue'")).Get(); BlockMesh->SetMaterial(0, TempMaterial); BlockMesh->AttachTo(DummyRoot); BlockMesh->OnClicked.AddDynamic(this, &AMyBox::blockClicked); //there is no instance of function template //matches the argument list. } |
Автор: | gary_cho [ 08 фев 2017, 11:59 ] |
Заголовок сообщения: | |
Что за код class UStaticMesh* BlockStatickMesh; BlockStatickMesh = ConstructorHelpers::FObjectFinderOptional<UStaticMesh>(TEXT("StaticMesh'/Game/MyBlock.MyBlock'")).Get(); Почему нельзя написать красиво UStaticMesh * BlockStatickMesh = ConstructorHelpers::FObjectFinderOptional<UStaticMesh>(TEXT("StaticMesh'/Game/MyBlock.MyBlock'")).Get(); Попробуй так написать UFUNCTION() void blockClicked(UPrimitiveComponent* ClickedComp, FKey ButtonPressed ); Смотри сигнатуру делегата FComponentOnClickedSignature OnClicked; DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams( FComponentOnClickedSignature, UPrimitiveComponent*, TouchedComponent , FKey, ButtonPressed); |
Автор: | zAvrr [ 08 фев 2017, 22:34 ] |
Заголовок сообщения: | Re: |
gary_cho писал(а): Что за код class UStaticMesh* BlockStatickMesh; BlockStatickMesh = ConstructorHelpers::FObjectFinderOptional<UStaticMesh>(TEXT("StaticMesh'/Game/MyBlock.MyBlock'")).Get(); Почему нельзя написать красиво UStaticMesh * BlockStatickMesh = ConstructorHelpers::FObjectFinderOptional<UStaticMesh>(TEXT("StaticMesh'/Game/MyBlock.MyBlock'")).Get(); Все от недостатка опыта) gary_cho писал(а): Попробуй так написать UFUNCTION() void blockClicked(UPrimitiveComponent* ClickedComp, FKey ButtonPressed ); Смотри сигнатуру делегата FComponentOnClickedSignature OnClicked; DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams( FComponentOnClickedSignature, UPrimitiveComponent*, TouchedComponent , FKey, ButtonPressed); Спасибо большое, все работает. |
Автор: | andre [ 03 май 2017, 16:32 ] |
Заголовок сообщения: | |
Очень не советую юзать конструкции типа ConstructorHelpers, тем более как я понял даже не из конструктора! |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |