Proper way to use game instance class?

I know the role of the game instance class, but what’s the best way to hold values and update them? I’m working off the assumption that the health, ammo, etc all goes in the instance so what’s the best way to update them? Have a function from the instance be called to update the values when they get changed? Set the values directly from the character or whatever blueprint when they’re changed? Should I use structures when dealing with instances to update more directly?