FAQ & Common issues, Dont's
Don'ts
1. Remember Prefabs are placed into Scene in Design Time and not instantiated during Runtime
Don’t place prefabs with the Remember Prefab component in the scene during design time, as this will cause duplicates to appear when loading a saved game. The Remember Prefab component is intended for saving and restoring prefabs that are instantiated at runtime.
Solutions
Remove the Remember Prefab component and make use of the Remember Component Workflow
If you can not avoid it, and you have to drag the prefab into the scene: Uncheck Register With Save System
2. Remember Prefabs in combination with Remember Skinned Mesh Renderer or Remember Mesh Renderer
Avoid redundant serialization and data application of the same target through overlapping features when using Remember Prefab (Settings: Track Mesh and Material Swaps) in combination with RememberSkinnedMeshRender or RememberMeshRenderer (Settings Remember Shared Materials or Unique Material Properties)
Solution
Stick to a Single Source of Truth. I generally prefer to handle serialization of components through Remember xx components.
3. Remember Prefabs in combination with Remember GameObject & Remember Transform
Avoid redundant serialization and data application of the same target through overlapping features when using Remember Prefab (Settings: Remember Destroyed, Remember Active, Remember Name, Remember Layer, Remember Tag)
in combination with Remember Game Object (Settings: Remember Active, Remember Name, Remember Layer, Remember Tag, Remember Destroyed) and
Remember Transform (Settings: Remember Position, Remember Rotation) in the prefab root.
While adding a Remember Transform does not cause any problems, especially if you use it only for serializing the scale of the Transform, a Remember GameObject however will show a warning because it can cause serialization problems:
4. Instantiating Prefabs without using the SaveablePrefabFactory
While in most cases, using Unity's default instantiation method works in most scenarios, there is an edge case where it fails:
Instantiating a disabled Prefab
Solutions:
Use the SaveablePrefabFactory Instantiation method.
Keep using Unity's Instantiation method and workaround the problem:
Keep the prefab enabled and disable the children
Instantiate an enabled Prefab into a deactivated GameObject
Instantiate as enabled Prefab, but immediately deactivate after 1 or 2 frames.
FAQ
Question: I have deleted Game Creator 2 or Asset XYZ. I see now compiler errors that symbol xyz does not exist. What is the problem?
Answer: Click on Reset Scripting Define Symbols in the menu Tools/Crystal Save/Project or manually remove the Symbol in case of Game Creator 2: REMEMBERME_GC2MODULE_PRESENT in the Player Settings.
List of all Scripting Define Symbols (version 1.6.x):
// ───────────────────────────────────────────────────────────────
// CONSTANTS
// ───────────────────────────────────────────────────────────────
private const string STANDARD_SYMBOL = "REMEMBERME_STANDARD_PRESENT";
private const string URP_SYMBOL = "REMEMBERME_URP_PRESENT";
private const string HDRP_SYMBOL = "REMEMBERME_HDRP_PRESENT";
private const string MEMORYPACK_SYMBOL = "MEMORYPACK";
private const string BOUNCYCASTLE_SYMBOL = "BOUNCYCASTLE";
private const string CUSTOM_SYMBOL = "ARAWN_REMEMBERME";
private const string GC2CORE_SYMBOL = "REMEMBERME_GC2CORE_PRESENT";
private const string GC2DIALOGUE_SYMBOL = "REMEMBERME_GC2DIALOGUE_PRESENT";
private const string GC2INVENTORY_SYMBOL = "REMEMBERME_GC2INVENTORY_PRESENT";
private const string GC2QUESTS_SYMBOL = "REMEMBERME_GC2QUESTS_PRESENT";
private const string GC2STATS_SYMBOL = "REMEMBERME_GC2STATS_PRESENT";
private const string GC2MELEE_SYMBOL = "REMEMBERME_GC2MELEE_PRESENT";
private const string GC2SHOOTER_SYMBOL = "REMEMBERME_GC2SHOOTER_PRESENT";
private const string GC2MAILBOX_SYMBOL = "REMEMBERME_GC2MAILBOX_PRESENT";
private const string GC2MODULE_SYMBOL = "REMEMBERME_GC2MODULE_PRESENT";
private const string CLOUD_SAVE_SYMBOL = "REMEMBERME_CLOUDSAVE_PRESENT";
private const string AUTHENTICATION_SYMBOL = "REMEMBERME_AUTHENTICATION_PRESENT";
private const string CORE_SERVICES_SYMBOL = "REMEMBERME_CORESERVICES_PRESENT";
private const string LOCALIZATION_SYMBOL = "REMEMBERME_LOCALIZATION_PRESENT";
private const string NVIDIA_DLSS_SYMBOL = "REMEMBERME_NVIDIA_DLSS_PRESENT";
private const string GOOGLE_PLAY_SYMBOL = "REMEMBERME_GOOGLEPLAY_PRESENT";
private const string APPLE_SIGNIN_SYMBOL = "REMEMBERME_APPLE_SIGNIN_PRESENT";
private const string FACEBOOK_SDK_SYMBOL = "REMEMBERME_FACEBOOK_SDK_PRESENT";
private const string STEAMWORKS_SYMBOL = "REMEMBERME_STEAMWORKS_PRESENT";
private const string EDITOR_COROUTINES_SYMBOL = "REMEMBERME_EDITOR_COROUTINES_PRESENT";
private const string ADDRESSABLES_SYMBOL = "REMEMBERME_ADDRESSABLES_PRESENT";
private const string NANINOVEL_SYMBOL = "NANINOVEL";
private const string NANINOVEL_MODULE_SYMBOL = "REMEMBERME_NANINOVEL_PRESENT";
Question: My prefab doesn't get saved and restored
Answer: Make sure the prefab is registered in the Prefab Registry. Open the Crystal Save Settings to see the Prefab Registry

Question: After importing Crystal Save I can't find any Crystal Save related Menu Entry under Tools or it is incomplete. What is the problem?
Answer: A scripting define symbol is missing in the Player Settings. Check that these Scripting Define Symbols exist:

Question: No matter what I try, it does not save and restore a state. What is the issue?
Answer: There were two reported cases that encountered this issue.
One user had serialization issues, caused by running an additional third party serializer in the project.
The other user encountered a Unity meta file issue likely created by a computer crash, third party asset, Unity bug etc.
The only solution for these cases is to start a new project and move over all assets to the new project, and to install Crystal Save before all other assets.
Question: Upon entering Playmode I get these errors. What did I miss to setup?

Answer: Install either the Default Settings by clicking on Install Default Setting in Tools/Crystal Save/Settings/ or start with blank settings by opening the Crystal Save settings in Tools/Crystal Save/Settings/Crystal Save Setting
Common Issues
Editor Performance
A few Users reported that the DefineSymbols class tanks Editor Performance. If this is also the case for you, simply deleting this class will solve your issue.
On an older system, you might want to delete these Editor classes as well:
RememberCompositeHierarchyIcon (Displays a small Icon in the Hierarchy Window)
SaveablePrefabHierarchyIcon (Displays a small Icon in the Hierarchy Window)
LinkedUniqueIDHierarchyIcon (Displays a small Icon in the Hierarchy Window)
SceneObjectIDEditor (Inspector view for SceneObjectID - Class is marked for deletion in a future update)
Deleting these classes won't have any effects on the Save System at runtime or in builds. These classes are just visual helpers and QoL Editor Improvements
Last updated