作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个当玩家按下“射击” 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();
};
#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);
}
LogTemp: Warning: No
LogSpawn: Warning: SpawnActor failed because no class was specified
最佳答案
您的代码看起来还可以,但是您应该在UPROPERTY内的头文件中添加一个说明符,也许Category只是给它一个标题
UPROPERTY(EditDefaultsOnly, Category = "Setup")
TSubclassOf<class ALaserTagLaser> LaserClass;
TSubclassOf
上方,这样
UPROPERTY
将可以在蓝图编辑器中作为下拉菜单在不真实的内部进行编辑。然后,您必须基于
ALaserTagLaser
创建一个新的蓝图。之后,打开下拉菜单,您将只看到
ALaserTagLaser
的类和类的子类。选择您创建的蓝图,单击blueprintEditor中的编译按钮,然后它应该可以工作了。
关于c++ - TSubclassOf <>不存储类类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59587928/
我正在尝试创建一个当玩家按下“射击” Action 映射时会生成的激光束 Actor 。我无法使TSubclassOf <>正常工作,因此无法生成创建激光的actor。我可以声明该变量并编译该项目,但
我正在 UE4 中制作激光枪战游戏,但在使用 TSubclassOf<> 时遇到了很多困难。 首先,我在我的 LaserTagCharacter.h 文件中像这样声明 LaserClass。我还创建了
我是一名优秀的程序员,十分优秀!