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

标签 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.从Event开始播放并调用SwapGameState 3.我正在创建引用 MyGameState 的变量。 4.然后我使用节点“GetGameState”获得的打印字符串名称进行打印,发现它没有改变。

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

最佳答案

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

你要的是这个

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

关于c++ - 在运行时创建和更改游戏状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44697286/

相关文章:

c++ - 尽管使用了 boost::scoped_ptr,我们是否应该在析构函数中删除成员指针?

c++ - 如何在 Unreal Editor 内容浏览器中找到 Unreal GameMode?

c++ - 我应该如何将线程内部的值复制回主线程?

c++ - 如何在 C++ 中从 UTexture2D 读取数据

c++ - 使用 C++ 改进将数据加载到虚幻引擎中

c++ - _mm256_shuffle_epi8 在这个生命游戏实现中有何意义?

c++ - 将 Matlab 扰码器函数翻译成 C

c++ - 使用 F5 虚拟 ip 和 C++ 连接 IBM MQ 队列

c++ - Mac OS X 中的 sem_getvalue() 功能障碍 - C++

c++ - 如何移动 TArray 的内容