Cost Efficiency of Casting to Game Instance

So like most games do, I would like mine to have sound effect and music volume multipliers as an option to change for players. The problem here is that I have a lot of different actors, all of which are spawned in run-time, and I’m not sure what the best way to communicate these options would be.
Right now, I have it so that at the beginning of the level (event begin play), the Sound effect and music volume save data variables are loaded and stored as variables in the game instance. then every actor will cast to the game instance to get this variable when it plays a sound. (This is every time a tank fires or a bullet hits something-in other words, this will happen a lot.) Is this the most efficient way of doing things? How CPU heavy is casting to the game instance to get variables? Is there a better way of making music and sound volume options?

I would look into the Sound Class. You can have each sound use a sound class to drive volume multipliers. Once you assign a sound class to each of your sound cues, the sounds will obey the rules of the sound class. You can still do your saving/loading of the volume variables in the game instance class, but assign them to the sound class instead of the sound cues.

Thank you! This was very helpful! The blueprint will look much cleaner now and I won’t have to consult the game instance every time I play a sound.

Is there something like this for particle effects? I’m also looking into a enable/disable particles option for players, and I’d have the exact same problem as I did with the sound.