How-To: Save & Load
Goal: persist and restore skill tree state with your own save system - the plugin is data-in, data-out and owns no persistence.
Prerequisites
An initialized manager (Quick Start) and a project save system that can store a
TArray of structs.1. Extract on change
Subscribe to OnSkillTreeStateUpdated, then pull a snapshot to hand to your save system.
STM->OnSkillTreeStateUpdated.AddDynamic(this, &UMySaveComponent::OnSkillTreeChanged);void UMySaveComponent::OnSkillTreeChanged(){TArray<FCrimsonSkillTree_SaveGameData> Data;STM->GetAllSkillTreesSaveData(Data);MyProjectSaveSystem->StoreSkillTreeData(Data);}
2. Restore after load
TArray<FCrimsonSkillTree_SaveGameData> Loaded = MyProjectSaveSystem->RetrieveSkillTreeData();STM->ApplyAllSkillTreesSaveData(Loaded);
Data-in, data-out
FCrimsonSkillTree_SaveGameData / FCrimsonSkillTree_SaveGameNodeState live in CrimsonSkillTree_SaveData.h. Serialize them however your project requires - the plugin never depends on CrimsonSaveSystem or GameplayStatics.Verify
Save, change allocation, reload - the restored tree matches the saved levels/states. Bump the asset's
Version to invalidate incompatible old saves.