不存储类类型<>
TSubclassOf<> isn't storing the class type
我正在尝试创建一个激光束Actor,当玩家按下"Fire"动作映射时生成。我无法让 SuchclassOf<> 工作,以便我可以生成创建激光的演员。我可以声明变量并编译项目,但我似乎无法在项目的其他任何地方使用该模板,因为变量未初始化???我将包含我的代码来帮助解释正在发生的事情。
这是我的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 条消息是:
日志温度: 警告: 否
和。。。
日志生成:警告:生成演员失败,因为未指定任何类
如果您对我如何解决此问题并使 TSubclassOf<>正常工作有任何见解,那就太棒了!
你的代码看起来没问题,但你应该在头文件中添加一个 UPROPERTY 中的说明符,也许一个类别只是给它一个标题
UPROPERTY(EditDefaultsOnly, Category = "Setup")
TSubclassOf<class ALaserTagLaser> LaserClass;
TSubclassOf
,这样UPROPERTY
就可以在虚幻引擎的蓝图编辑器中作为下拉菜单进行编辑。然后,您必须根据ALaserTagLaser
创建新蓝图。之后,打开下拉菜单,您将只看到ALaserTagLaser
类的类和子类。选择您创建的蓝图,单击蓝图编辑器中的编译按钮,然后它应该可以工作了...
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- 如何防止clang格式在流运算符调用之间添加换行符<<
- <<操作员在下面的行中工作
- EASTL矢量<向量<int>>连续的
- C - 创建矢量&lt; vector&lt; double&gt;&gt;矩阵具有分配而不是inizializ
- 为什么将此对向量&lt; map&lt; int,int&gt;&gt;中的地图进行更新.失败
- C :对矢量进行排序&lt; struct&gt;(结构有2个整数)基于结构的整数之一
- 明确的专业化“ CheckIntmap&lt;&gt;”实例化
- 什么是模板&lt;&gt;inline bla bla
- 编辑C Qlist&lt; object*&gt; gt;QML代码和一些QML警告中的模型
- eigen :: llt&lt;eigen :: matrixxd&gt;具有不完整的类型
- 错误,包括&lt; ctype&gt;在原子上使用C 11
- std::vector<;uint8_t>;当C++11/14启用时,手动复制而不是调用memcpy
- 如何加入向量&lt; int&gt;到C 中的单个INT
- 是std :: set&lt; std :: future&gt;不可能存在
- 是numeric_limits&lt; int&gt; :: is_modulo从逻辑上矛盾
- opencv 2.4.7在iOS错误背景_segm.hpp #include&lt; list&gt;未找到
- 在修改列表后,std :: list&lt; t&gt; :: end()的值是否会更改
- ///<评论></评论>在Visual Studio中