【发布时间】:2019-07-17 16:41:25
【问题描述】:
我们尝试在角色的构造函数中初始化组件。该代码适用于 v4.15 但不适用于 v4.21。
这是我们的代码(分别是.h文件和.cpp文件):
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Character.h"
#include "MainCharacter.generated.h"
UCLASS()
class VRET_API AMainCharacter : public ACharacter
{
GENERATED_BODY()
public:
// Sets default values for this character's properties
AMainCharacter();
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
// Called to bind functionality to input
virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;
private:
UPROPERTY()
class UCameraComponent * camera;
UPROPERTY()
class USceneComponent * VRroot;
};
#include "MainCharacter.h"
#include "Camera/CameraComponent.h"
#include "MotionControllerComponent.h"
#include "Runtime/Engine/Classes/Components/StaticMeshComponent.h"
#include "Runtime/CoreUObject/Public/UObject/ConstructorHelpers.h"
// Sets default values
AMainCharacter::AMainCharacter()
{
// Set this character to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
VRroot = CreateDefaultSubobject<USceneComponent>(TEXT("VRroot"));
VRroot->SetupAttachment(GetRootComponent());
camera = CreateDefaultSubobject<UCameraComponent>(TEXT("Camera"));
camera->SetupAttachment(VRroot);
}
代码可以编译,但是当我们运行游戏时,我们的角色组件没有被初始化,并且在游戏过程中我们无法在编辑器中找到它们,但是默认的角色组件(例如:胶囊组件)可以正常工作并显示。
【问题讨论】:
-
可能是引擎升级蓝图的问题。您可以尝试添加一个继承
AMainCharacter的新蓝图或创建一个新的 4.21 项目并将您的代码复制到其中
标签: c++ unreal-engine4