- Home /
What is the best way to make static class fields persistent between Play mode and Edit mode?
I'm trying to create an Editor tool for configuring a component, but I can't seem to find a way to keep its fields persistent when I hit play mode -- all configured information is lost. The optimal solution for me would be to keep this configuration stored in the scene so that it is loaded when the scene is loaded; I'd like to avoid saving the information to a file manually if I can avoid it.
Here's a rough example of what I'd like to keep persistent:
using UnityEngine; using System.Collections; using System.Collections.Generic;
public class PersistenceExampleClass : MonoBehaviour { protected static List<Node> _nodes = new List<Node>();
public static Node AddNode()
{
Node result = new Node();
_nodes.Add( result );
return result;
}
}
I have AddNode being triggered by an Editor script, which works successfully; however, entering Play mode any Node
objects added to _nodes
are lost. Node
inherits from Object
, but not MonoBehaviour
. Is anyone familiar with a way to keep that information around?
Answer by eduwushu · Jul 21, 2011 at 07:08 AM
Node class must be marked as Serializable with an attribute (and all of its fields that you want to keep must me marked also with SerializeField attribute). Then you will have to mark the _nodes field with SerializeField attribute too, as it is a non-public member of PersistenceExampleClass and this way will not be serialized.
Your answer
Follow this Question
Related Questions
Cannot close/unload a scene that is open in editor during playmode (using C# code)? 3 Answers
Cannot close Preview Scene 0 Answers
How to save field changes to scene file using ContextMenu? 1 Answer
How can I make function run in the editor only when I press a button in the inspector? 1 Answer
Editor Scene? 1 Answer