4.9 Ability System Globals
AbilitySystemGlobals 类保存有关于 GAS 的全局信息。大多数变量可以从 DefaultGame.ini 中设置。一般来说,你不需要与这个类交互,但你应该知道它的存在。如果你需要子类化像 GameplayCueManager 或 GameplayEffectContext 这样的东西,你必须通过 AbilitySystemGlobals 来实现。
要子类化 AbilitySystemGlobals,在 DefaultGame.ini 中设置类名:
[/Script/GameplayAbilities.AbilitySystemGlobals]
AbilitySystemGlobalsClassName="/Script/ParagonAssets.PAAbilitySystemGlobals" 4.9.1 InitGlobalData()
在 UE 4.24 到 5.2 之间,需要调用 UAbilitySystemGlobals::Get().InitGlobalData() 来使用 TargetData,否则你会遇到与 ScriptStructCache 相关的错误,并且客户端会从服务器断开连接。此函数在项目中只需调用一次。Fortnite 从 UAssetManager::StartInitialLoading() 调用它,而 Paragon 从 UEngine::Init() 调用它。我发现把它放在 UAssetManager::StartInitialLoading() 是一个不错的地方,如示例项目中所示。我会将此视为样板代码,你应该复制到项目中以避免与 TargetData 相关的问题。从 5.3 开始,它会自动调用。
如果你在使用 AbilitySystemGlobals 的 GlobalAttributeSetDefaultsTableNames 时遇到崩溃,你可能需要稍后调用 UAbilitySystemGlobals::Get().InitGlobalData(),例如在 AssetManager 中,或者在 GameInstance 中。