gpt4 book ai didi

c++ - TSubclassOf <>不存储类类型

转载 作者:行者123 更新时间:2023-12-02 10:22:17 25 4
gpt4 key购买 nike

我正在尝试创建一个当玩家按下“射击” Action 映射时会生成的激光束 Actor 。我无法使TSubclassOf <>正常工作,因此无法生成创建激光的actor。我可以声明该变量并编译该项目,但由于该变量未初始化,因此我似乎无法在项目的其他任何地方使用该模板?我将包括我的代码以帮助解释正在发生的事情。

这是我的LaserTagCharacter.h文件。我已经声明了LaserClass变量,并且可以毫无问题地编译此代码。

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Character.h"
#include "LaserTagCharacter.generated.h"

UCLASS()
class LASERTAG_API ALaserTagCharacter : public ACharacter
{
GENERATED_BODY()

public:
// Sets default values
ALaserTagCharacter();

UPROPERTY()
TSubclassOf<class ALaserTagLaser> LaserClass;

protected:
// Called when player fires a laser beam
void OnFire();
};

移至LaserTagCharacter.cpp文件,我在创建模板类时包含了一些调试代码和主要目标。我创建了模板类以在SpawnActor函数中使用它,该函数将生成LaserTagLaser的实例。
#include "LaserTagCharacter.h"
#include "Camera/CameraComponent.h"
#include "Components/CapsuleComponent.h"
#include "Components/InputComponent.h"
#include "LaserTagLaser.h"
#include "Engine/World.h"

// Sets default values
ALaserTagCharacter::ALaserTagCharacter()
{

}

// Called when player uses fire action binding
void ALaserTagCharacter::OnFire()
{
UWorld* World = GetWorld();
FVector SpawnLocation = GetActorLocation();
FRotator SpawnRotation = GetControlRotation();

if (LaserClass)
{
UE_LOG(LogTemp, Warning, TEXT("Yes"))
}
else
{
UE_LOG(LogTemp, Warning, TEXT("No"))
}

World->SpawnActor<ALaserTagLaser>(LaserClass, SpawnLocation, SpawnRotation);
}

编译,播放并按“Fire”操作映射时,从输出日志中获得的2条消息是:

LogTemp: Warning: No



和...

LogSpawn: Warning: SpawnActor failed because no class was specified



如果您对我该如何解决并让TSubclassOf <>正常工作有任何见解,那就太好了!

最佳答案

您的代码看起来还可以,但是您应该在UPROPERTY内的头文件中添加一个说明符,也许Category只是给它一个标题

UPROPERTY(EditDefaultsOnly, Category = "Setup")
TSubclassOf<class ALaserTagLaser> LaserClass;

TSubclassOf上方,这样 UPROPERTY将可以在蓝图编辑器中作为下拉菜单在不真实的内部进行编辑。然后,您必须基于 ALaserTagLaser创建一个新的蓝图。之后,打开下拉菜单,您将只看到 ALaserTagLaser的类和类的子类。选择您创建的蓝图,单击blueprintEditor中的编译按钮,然后它应该可以工作了。

关于c++ - TSubclassOf <>不存储类类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59587928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com