在C ++ / Unreal Engine 4中访问不同类中的静态变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C ++ / Unreal Engine 4中访问不同类中的静态变量相关的知识,希望对你有一定的参考价值。
我有一个在头文件中声明的静态变量,并在相应的cpp文件中初始化。我想要做的是从另一个cpp文件访问该变量。这是代码:
AkOcclusionObstructionService.h
class AkOcclusionObstructionService
{
public:
static float OcclusionFadeRate;
...
}
AkOcclusionObstructionService.cpp
...
float AkOcclusionObstructionService::OcclusionFadeRate = 3.0f;
...
MyBlueprintFunctionLibrary.cpp
#include "MyBlueprintFunctionLibrary.h"
#include "AkOcclusionObstructionService.h"
void UMyBlueprintFunctionLibrary::ChangeWwiseFadeRate(float rate)
{
AkOcclusionObstructionService::OcclusionFadeRate = rate;
}
当我尝试构建Visual Studio时给出了这个错误:
“LNK2001未解析的外部符号”public:static float AkOcclusionObstructionService :: OcclusionFadeRate“(?OcclusionFadeRate @ AkOcclusionObstructionService @@ 2MA)”。
看起来MyBlueprintFunctionLibrary看不到AkOcclusionObstructionService cpp文件中的OcclusionFadeRate变量。
任何人都知道发生了什么?
提前致谢!
编辑:其他链接/建筑信息:
要使“AkOcclusionObstructionService.h”文件对“MyBlueprintFunctionLibrary.cpp”文件可见,我们必须向“TestFadeRateWwise2.build.cs”添加一些内容(TestFadeRateWwise2是项目名称)。具体来说,我们不得不在这一行添加“AKAUDIO”:
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay", "AKAUDIO" });
这是我们做过的唯一“非标准”事情。
根据您发布的代码很难判断,但我认为问题是因为下面的行在函数内:
float AkOcclusionObstructionService::OcclusionFadeRate = 3.0f;
将该行移到函数外部并再次尝试。你可以看看这个问题:How to access static members of a class?
以上是关于在C ++ / Unreal Engine 4中访问不同类中的静态变量的主要内容,如果未能解决你的问题,请参考以下文章
Tim Sweeney解释为什么Unreal Engine 4全面转向C++