Yep, saving both material array and index is fine. It could be just the index too but I don’t see an issue with just saving one.
One thing we’ll want to confirm before looking at the Blueprint execution is that the Load Game is working as expected. When load game is called, try getting the material index from the save game reference. It should be something like the bottom two steps of this https://docs.unrealengine.com/en-us/Gameplay/SaveGame/Blueprints