因此,我试图使仅包含字符串变量的通用C ++静态。我在该项目中使用虚幻引擎4。 我有一个可行的解决方案,但希望了解我在C#中所做的工作是否可以在C ++中完成。
工作解决方案(C ++): DFControllerGameModeBase.h
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/GameModeBase.h"
#include "DFControllerGameModeBase.generated.h"
#define MoveForwardInput "MoveForward"
实施:
#include "DFControllerGameModeBase.h"
void ADFCharacter::Play(){
.....
string text = MoveForwardInput;
}
但这是我在Unity中使用C#所做的事情
using System;
namespace Assets.Scripts.Helpers
{
public static class Utilities
{
public static string MoveForward = "MoveForward";
}
}
实施:
using Assets.Scripts.Helpers;
void Play(){
string text = Utilities.MoveForward;
}
答案 0 :(得分:2)
如果封装没有问题,并且不会在Blueprint中使用静态变量,那么只需使用#define即可。
您还希望将大写字母用于#define命名约定。
#define MOVE_FORWARD_INPUT "MoveForward"
但是,如果您希望将其封装并能够在蓝图中进行调用。然后,您必须创建一个静态帮助器类。
.h
class Utilities
{
public:
static const FString MoveForward;
//create BP getter function here
}
.cpp
const FString Utilities::MoveForward = "MoveForward";