/// <summary> /// Useful if you want to dynamically add a saveable component. To ensure it /// gets registered. /// </summary> /// <param name="identifier">The identifier for the component, this is the adress the data will be loaded from </param> /// <param name="iSaveable">The interface reference on the component. </param> /// <param name="reloadData">Do you want to reload the data on all the components? /// Only call this if you add one component. Else call SaveMaster.ReloadListener(saveable). </param> public void AddSaveableComponent(string identifier, ISaveable iSaveable, bool reloadData = false) { saveableComponentIDs.Add(string.Format("{0}-{1}", saveIdentification, identifier)); saveableComponentObjects.Add(iSaveable); if (reloadData) { // Load it again, to ensure all ISaveable interfaces are updated. SaveMaster.ReloadListener(this); } }
/// <summary> /// Gets and adds a saveable components. This is only required when you want to /// create gameobjects dynamically through C#. Keep in mind that changing the component add order /// will change the way it gets loaded. /// </summary> public void ScanAddSaveableComponents() { ISaveable[] saveables = GetComponentsInChildren <ISaveable>(); for (int i = 0; i < saveables.Length; i++) { string mono = (saveables[i] as MonoBehaviour).name; AddSaveableComponent(string.Format("Dyn-{0}-{1}", mono, i.ToString()), saveables[i]); } // Load it again, to ensure all ISaveable interfaces are updated. SaveMaster.ReloadListener(this); }