在运行时创建和更改游戏状态

时间:2017-06-22 10:51:39

标签: c++ unreal-engine4

我正在努力解决标题中提到的问题。现在我在构造函数中设置默认值,然后我想用我的函数更改它,但它似乎不起作用。

 void AMyGameModeBase::SwapGameState(AGameStateBase* GameStateVariable)
    {
        GameStateClass = GameStateVariable->StaticClass();
    }

我该如何正确地做到这一点?好的解释会很棒:)

编辑:

所以这是我的整个代码: MyGameModeBase.h

#pragma once

#include "GameFramework/GameMode.h"
#include "MyGameModeBase.generated.h"

/**
 * 
 */
UCLASS()
class PROJECT_API AMyGameModeBase : public AGameMode
{
    GENERATED_BODY()

public:

    AMyGameModeBase();

    UFUNCTION(BlueprintCallable, Category="GameState")
    void SwapGameState(AGameStateBase* GameStateVariable);
};

MyGameModeBase.cpp

#include "Project.h"
#include "MyGameModeBase.h"


AMyGameModeBase::AMyGameModeBase()
{
    GameStateClass = AGameStateBase::StaticClass();
}


void AMyGameModeBase::SwapGameState(AGameStateBase* GameStateVariable)
{
    GameStateClass = GameStateVariable->StaticClass();
}

我当时正在做的是: 1.打开GameMode蓝图 2.Drag from Event开始播放并调用SwapGameState 3.我正在创建引用MyGameState的变量。 4.然后我使用节点“GetGameState”获得的打印字符串名称进行打印,并看到它没有更改。

我想要达到的目标是: 1.CreateGameState在运行时 2.也在运行时将其设置为使用的默认游戏状态。

1 个答案:

答案 0 :(得分:2)

StaticClass函数是一个静态函数,您可以像MyStateClass::StaticClass()

一样调用它

你想要的是这个

void AMyGameModeBase::SwapGameState(AGameStateBase* GameStateVariable)
{
    GameStateClass = GameStateVariable->GetClass();
}