Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么可以';t我创建一个TSubclassOf<&燃气轮机;要在SpawnActor()函数中使用?_C++_Unreal Engine4 - Fatal编程技术网

C++ 为什么可以';t我创建一个TSubclassOf<&燃气轮机;要在SpawnActor()函数中使用?

C++ 为什么可以';t我创建一个TSubclassOf<&燃气轮机;要在SpawnActor()函数中使用?,c++,unreal-engine4,C++,Unreal Engine4,我正在用UE4做一个激光标签游戏,使用TSubclassOf有很多困难 首先,我在LaserTacCharacter.h文件中声明LaserClass,如下所示。我还创建了一个名为OnFire()的函数,当玩家使用“Fire”动作绑定时会调用该函数 #pragma once #include "CoreMinimal.h" #include "GameFramework/Character.h" #include "LaserTagCharacter.generated.h" UCLASS()

我正在用UE4做一个激光标签游戏,使用TSubclassOf有很多困难

首先,我在LaserTacCharacter.h文件中声明LaserClass,如下所示。我还创建了一个名为OnFire()的函数,当玩家使用“Fire”动作绑定时会调用该函数

#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(VisibleAnywhere, Category = "Laser")
    TSubclassOf<class ALaserTagLaser> LaserClass;

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

我很困惑,因为我清楚地指定了我想要的类。如果有人能提供一些见解,那就太棒了。

您需要为LaserClass指定一个有效的类或子类。在BP中,可以在“详细信息”面板中进行设置。如果您不想在BP中这样使用它,并且总是想生成一个ALaserTagLaser,那么您可以给SpawnActor一个类引用

World->SpawnActor<ALaserTagLaser>(ALaserTagLaser::StaticClass(), GetActorLocation(), GetActorRotation(), SpawnParameters);
World->SpawnActor(ALaserTagLaser::StaticClass()、GetActorLocation()、GetActorRotation()、SpawnParameters);

您需要为LaserClass分配一个有效的类或子类。在BP中,可以在“详细信息”面板中进行设置。如果您不想在BP中这样使用它,并且总是想生成一个ALaserTagLaser,那么您可以给SpawnActor一个类引用

World->SpawnActor<ALaserTagLaser>(ALaserTagLaser::StaticClass(), GetActorLocation(), GetActorRotation(), SpawnParameters);
World->SpawnActor(ALaserTagLaser::StaticClass()、GetActorLocation()、GetActorRotation()、SpawnParameters);

可能LaserClass没有用指向正确的UClass的指针初始化?我如何初始化它?@rTaP确保
ALaerTagCharacter
的每个实例都定义了一个
LaserClass
。您的场景中可能有一个实例没有为
LaserClass
设置值,也许LaserClass没有使用指向正确的类的指针初始化?如何初始化它?@rTaP确保
ALaerTagCharacter
的每个实例都有一个定义的
LaserClass
。场景中可能有一个实例,您尚未为其设置
LaserClass
World->SpawnActor<ALaserTagLaser>(ALaserTagLaser::StaticClass(), GetActorLocation(), GetActorRotation(), SpawnParameters);