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
中。