- Home /
Getting data from Editor into runtime
The Setup
I just spent a week writing some editor code that allows me to place spawn points around my map (in the editor).
The editor script, SpawnEditorWindow, resides in the Editor folder.
The manager for that script, called SpawnPointManager (resides outside Editor folder), is connected to an empty game object in my scene.
Also connected to that empty game object is another script called SpawnManager, which communicates with my in-game pauseMenu to spawn all the characters in the map at runtime.
SpawnManager draws information from SpawnPointManager, which in turn figure out how many spawns there are from SpawnEditorWindow (basically, from the editor slider bars).
The Problem
So, on to my problem... This works beautifully inside the editor. I hook everything up, open the spawn editor window, adjust how many spawns I want, position them, etc.
However... when I go to run this, the List those spawns isn't initalized... or maybe it's reintialized, I don't know. Anyway, the List count is zero, thus no spawns exist.
The Question
What are my options here? How can I get this information into runtime? It's a List.
$$anonymous$$ake sure that all the relevant information is being stored in serialized objects in the scene. Information that is only in the editor window will be lost whenever the scripts reload.
Answer by PaxNemesis · Mar 16, 2012 at 03:37 PM
If you put your own custom class into a list it have to be Serialized not to disappear. So if you have a custom SpawnPoint script you need to use the [System.Serializable] attribute:
[System.Serializable]
public class SpawnPoint : MonoBehaviour
{
// Stuff you want to do.
}
public SpawnPointManager : MonoBehaviour
{
public List<SpawnPoint> spawns = new List<SpawnPoint>();
// Do the rest of your stuff.
}
Thanks for the snippet and the explaination. Your tip about the custom class list was spot on. It's working now, thanks!
PS: Anyone reading this in the future may want to know that I had to delete the game objects and reattach my scripts after this for it to recognize it. Not sure why.
Answer by DaveA · Mar 16, 2012 at 07:16 AM
You could have a game object with a script containing a List and have your editor script Find it and copy to it.
That's actually how it's set up now. SpawnPoint$$anonymous$$anager (records spawn points) and Spawn$$anonymous$$anager (what actually manages the spawning), are both attached to an empty game object. The editor script is finding the SpawnPoint$$anonymous$$anager script and setting that game objects position (the spawn node) to what the slider in the editor window says. No dice.