- Home /
Serialization and Object references
For about a week now, I've been stuck on this particular issue.
Pretext
I'm building my own PathFinding system based on WaypointNodes; thus, each node needs to maintain a reference to a node it is linked to. Similarly, I want to implement a system of type definitions that will associate a Waypoint Node with a certain type (ie, a road that has a certain weighted value) contained on a central list (so it can be edited by an editor).
Currently, if I reference other classes, and serialize the reference, the reference is replaced with a copy of the object once Unity restarts.
Ideally, I could use IDs to search through the list to grab the data; however, the data will get polled constantly, when in the editor, potentially slowing things down. Not to mention, but how would I be able to maintain IDs when static variables don't get serialized. The NextID would be reset every time I compiled the code or restarted Unity.
Question How do I go about serializing direct references to other class-objects? Is there a way to resynch references? And are there any workarounds?
In other words:
[SerializeField]
int a = 1;
[SerializeField]
int b = a;
[SerializeField]
int c = a;
If I compile or restart Unity, how do I make sure that b and c still point to a?
I would say depends on what you want to serialize...
Easiest would probably be to make 'a' inherrit from UnityEngine.Object ($$anonymous$$onoBehaviour or ScriptableObject). Sinse UnityEngine.Object gets serialized as a reference ins$$anonymous$$d of a value.
If you want 'a' to inherrit from System.Object (nothing) though, you could perhaps use the ISerializationCallbackReceiver on the container (or 'a' perhaps) and create the references in the OnAfterDeserialize method.
Currently it isn't really clear to me what you want to serialize though (posting code of the variables you want to serialize could help). So I'm not sure which option would be best or if there could even be a option in which there isn't a reference needed...
Your answer
Follow this Question
Related Questions
How to store references between scriptableobject assets 3 Answers
Editor tool/serialization crash on windows 0 Answers
Unity still references file moved to different folder 1 Answer
Serialize, deserialize and keep references alive 1 Answer
Problem with serialization since version 5.0 (Parent/Children relationship) 0 Answers