I’m using GAS(GameplayAbilitySystem) module in my game,I find out the Gameplay Cue Managed by GameplayCueManager and GameplayCueSet. All Cue will loading when ANY Cue executing, I think is not friendly for heavily use GAS. Why not let Ability or Effect dependent owner GameplayCue,and the the assets system will auto manager the resources load. What is the GameplayCueManager’s design goals?
An alternative to async loading every GameplayCue
on startup is to only async load GameplayCues
as they’re triggered in-game. This mitigates the unnecessary memory usage and potential game hard freezes while async loading every GameplayCue
in exchange for potentially delayed effects for the first time that a specific GameplayCue
is triggered during play. This potential delay is nonexistent for SSDs. I have not tested on a HDD. If using this option in the UE Editor, there may be slight hitches or freezes during the first load of GameplayCues if the Editor needs to compile particle systems. This is not an issue in builds as the particle systems will already be compiled.
First we must subclass UGameplayCueManager
and tell the AbilitySystemGlobals
class to use our UGameplayCueManager
subclass in DefaultGame.ini
.
[/Script/GameplayAbilities.AbilitySystemGlobals]
GlobalGameplayCueManagerClass="/Script/ParagonAssets.PBGameplayCueManager"
In our UGameplayCueManager
subclass, override ShouldAsyncLoadRuntimeObjectLibraries()
.
virtual bool ShouldAsyncLoadRuntimeObjectLibraries() const override { return false; }