C# 如何使用C++;? >我试图制作一个只包含字符串变量的C++静态实体。我在这个项目中使用虚幻引擎4我有一个工作解决方案,但我想看看我在C++中做什么可以在C++中完成。 < /p>
工作解决方案(C++): DFControllerGameModeBase.hC# 如何使用C++;? >我试图制作一个只包含字符串变量的C++静态实体。我在这个项目中使用虚幻引擎4我有一个工作解决方案,但我想看看我在C++中做什么可以在C++中完成。 < /p>,c#,c++,unreal-engine4,C#,C++,Unreal Engine4,工作解决方案(C++): DFControllerGameModeBase.h #pragma once #include "CoreMinimal.h" #include "GameFramework/GameModeBase.h" #include "DFControllerGameModeBase.generated.h" #define MoveForwardInput "MoveForward" 实施: #include "DFControllerGameMod
#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;
}
using Assets.Scripts.Helpers;
void Play(){
string text = Utilities.MoveForward;
}
然而,这就是我在C#中使用Unity时所做的:
using System;
namespace Assets.Scripts.Helpers
{
public static class Utilities
{
public static string MoveForward = "MoveForward";
}
}
实施:
#include "DFControllerGameModeBase.h"
void ADFCharacter::Play(){
.....
string text = MoveForwardInput;
}
using Assets.Scripts.Helpers;
void Play(){
string text = Utilities.MoveForward;
}
如果您在封装方面没有问题,并且不会在Blueprint中使用静态,那么只需使用#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";
我不知道这是否是您真正需要的,但您可以使用名称空间和枚举类来实现。不会是静态变量,但符合目的。您可以使用include-guard或pragma一次,以避免重复。@Radagast感谢您的指导,我已经考虑了枚举。这是一个我试图探索C++和翻译我的C样本的问题。over@sujaygchandbruglesco的重定向链接应该是更好的选择。祝你好运谢谢你的回答,正是我想要的