Unreal C ++ Ошибка: ошибка C2248: «UPrimitiveComponent :: bGenerateOverlapEvents»: не может получить доступ к закрытому члену, объявленному в классе «UPrimitiveComponent» - PullRequest
0 голосов
/ 13 сентября 2018

Я Ксавье Тен Хоув, и я очень новичок в C ++ и Unreal Engine 4.

Я создаю сценарий раскладки с помощью коллайдера, и у меня возникла ошибка с моим скриптом раскладки. ошибка C2248: 'UPrimitiveComponent :: bGenerateOverlapEvents': не может получить доступ к закрытому члену, объявленному в классе 'UPrimitiveComponent'

Я действительно пытаюсь это исправить, но не могу найти то, что мне нужно!

Вот мой код заголовка:

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "Pickup.generated.h"

UCLASS()
class XAVIER_CPP_TUT_API APickup : public AActor
{
    GENERATED_BODY()

public:
    // Sets default values for this actor's properties
    APickup();

//  protected:
    // Called when the game starts or when spawned
    virtual void BeginPlay() override;

public:
// Called every frame
virtual void Tick(float DeltaSeconds) override;


//*********************************************

UPROPERTY(EditAnywhere)
    USceneComponent* PickupRoot;

//The static mesh for the pick up
UPROPERTY(EditAnywhere)
    UStaticMeshComponent* PickupMesh;

UPROPERTY(EditAnywhere)
    UShapeComponent* PickupBox;

UFUNCTION()
    void OnPlayerEnterPickupBox(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* otherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult);



};
//Xavier ten Hove

Вот мой код .cpp:

// Fill out your copyright notice in the Description page of Project Settings.

#include "Pickup.h"
#include "Classes/Components/ShapeComponent.h"
#include "Classes/Components/BoxComponent.h"
#include "Components/StaticMeshComponent.h"

// Sets default values
APickup::APickup()
{
    // Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
    PrimaryActorTick.bCanEverTick = true;

#pragma region Declaratie_Variabelen
    PickupRoot = CreateDefaultSubobject<USceneComponent>(TEXT("PickupRoot"));
    RootComponent = PickupRoot;

    PickupMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("PickupMesh"));
    PickupMesh->AttachToComponent(PickupRoot, FAttachmentTransformRules::SnapToTargetNotIncludingScale);

    // * Maak een Colliderbox -->
    PickupBox = CreateDefaultSubobject<UBoxComponent>(TEXT("PickupBox"));
    PickupBox->SetWorldScale3D(FVector(1.0f, 1.0f, 1.0f));
    PickupBox->bGenerateOverlapEvents = true;
    PickupBox->OnComponentBeginOverlap.AddDynamic(this, &APickup::OnPlayerEnterPickupBox);
    PickupBox->AttachToComponent(PickupRoot, FAttachmentTransformRules::SnapToTargetNotIncludingScale);
    // <-- Maak een Colliderbox *

#pragma endregion Declaratie_Variabelen
}

// Called when the game starts or when spawned
void APickup::BeginPlay()
{
    Super::BeginPlay();

}

// Called every frame
void APickup::Tick(float DeltaTime)
{
    Super::Tick(DeltaTime);

}

#pragma region Custom Functions
void APickup::OnPlayerEnterPickupBox(UPrimitiveComponent * OverlappedComp, AActor * OtherActor, UPrimitiveComponent * otherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult & SweepResult)
{
    Destroy();
}

#pragma endregion Custom Functions
//Xavier ten Hove

Я надеюсь, что вы, люди, можете мне помочь!

~ Ксавье тен Хоув

1 Ответ

0 голосов
/ 29 сентября 2018

Попробуйте
PickupBox-> SetGenerateOverlapEvents (истина);
вместо
PickupBox-> bGenerateOverlapEvents = true;

Я надеюсь, что это может быть полезно

https://api.unrealengine.com/INT/API/Runtime/Engine/Components/UPrimitiveComponent/index.html

...