Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Unity Save Game / Level Serialization

Discussion in 'Assets and Asset Store' started by whydoidoit, Jun 5, 2012.

  1. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    All

    I am releasing on 100% free public MIT license my code for generic level serialisation and Load/Save game features.

    The code is currently in beta (it works fine for me, but will probably have some limitations).

    UnitySerializer is a full level serialisation plug in. It enables you to save the progress of a game and restore it at some point in the future. It does this with minimal impact on the design of your game and requires minimal modification to your behaviours and classes.

    UnitySerializer has been tested working on iOS and should work fine on Droid.

    The serializer supports storing newly instantiated prefabs, as well as the status of existing scene objects (such as those that might be destroyed during the course of a game).

    UnitySerializer supports the serialization of your custom classes and properties as well as most standard Unity components including

    • Animation support
    • Rigidbody support
    • NavMeshAgent (although the agent must recalculate its path on restoration)
    • Transform – including parent/child relationships

    If you need path following you can use the code found elsewhere on my blog which will resume fine.

    In addition, presuming you use my extended coroutine start functions, all of your coroutines will continue executing from the point that they left off and will be restored with all local variables intact. You need make no changes to your coroutines – just to the way that you start them.

    The status of your level is stored in a string which can be placed in PlayerPrefs – stored on a server or in a file.

    You can find the code here: http://whydoidoit.com/unity-serializer-v0-2/

    Any problems can be emailed to michael.john.talbot@gmail.com

    I hope I've got the package contents right - please let me know if I haven't

    Regards

    Mike

     
    Last edited: Dec 1, 2012
    Eric2241 likes this.
  2. kookyoo

    kookyoo

    Joined:
    Apr 19, 2010
    Posts:
    53
    Nice job, I'll check it right now. Thank's for sharing.

    Edit : There's something going wrong. I got an error with UniqueIdentifier.cs. Looks like it doesn't do the job as expected at line 90 (FixName function) :

    var p = gameObject.LastAncestorOfType<UniqueIdentifier>();

    The result is that generated cubes are not saved and Console is flooded by LogError(). Obviously no one of the GameObjects is saved.

    Edit 2 : The package works fine on a brand new empty project. Maybe something wrong with my previous project settings.

    Is there any way (using tags or layer) to ignore some GameObjects during save instead of just ignoring their scripts ?
     
    Last edited: Jun 6, 2012
  3. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    I could easily add an event to check for each object being stored so you can add any checking you like... Does that sound like it would work?
     
  4. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    So I've updated the small download package and added a new static event to LevelSerializer called Store. It is passed the GameObject and a bool which you can set to false to stop that particular object from being Serialized. Let me know if that works for you and I'll roll it through the rest of the examples.

    **EDIT** Uploaded the wrong project - NOW the small download has the Store event.
     
    Last edited: Jun 7, 2012
  5. kenlem

    kenlem

    Joined:
    Oct 16, 2008
    Posts:
    1,630
    Can this save references to other gameobjects?
     
  6. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    Yes it can save references to any component on another game object or game objects themselves. Referenced game objects must have one of the storage scripts attached. If it just needs to hold a reference then UniqueIdentifier is enough - often of course a referenced game object will be storing its own information and hence nothing else will be required.

    Actually I've posted a complete project example which has a lot of object references. It's basically a simple NPC example where the characters collect items and deliver them. It's what I use as a test harness because it needs reasonably complex custom classes, generic dictionaries etc. And of course a lot of references to world objects. It's huge because I just zipped the project directory, but it can be found here
     
    Last edited: Jun 7, 2012
  7. robin_notts

    robin_notts

    Joined:
    Apr 7, 2010
    Posts:
    86
    Looks and works great. Does this work on iOS?
     
  8. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    Yes it works fine on iOS - I'm using it on the iPhone myself.

    IOS is a bit of a challenge due to AOT compilation - but I think I've caught all of the cases - if I haven't then it will be easy to fix. As I say - my game works fine so most cases should be tested.
     
  9. Adam-Buckner

    Adam-Buckner

    Joined:
    Jun 27, 2007
    Posts:
    5,664
    Very nice! Thanks for the good work and appreciate that you are making it available to the community.
     
  10. hima

    hima

    Joined:
    Oct 1, 2010
    Posts:
    183
    Whydoidoit, you are an awesome person. Thank you for making it available for everyone :)
     
  11. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    Apologies to anyone who tried to download the files in the last few hours - I had a problem with my file host and they dropped all of the links - apparently so many people downloaded stuff that I blew a bandwidth allowance I didn't know I had. I have now hosted 2 out of 3 of the files with a new host (unlimited bandwidth!) and the large test harness should be available in an hour or so.

    Update:

    All files are available again.
     
    Last edited: Jun 11, 2012
  12. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    I've released a new version that has an extra filtering event for the items being stored and also added a PlayMaker addin that will store the variables and states of PlayMaker Finiite State Machines attached to game objects. As before it is available from here
     
    Last edited: Jun 11, 2012
  13. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    A major new release has been made - now supports referencing AnimationClips, AudioClips, Meshes and Materials. Supports complex changes to hierarchies during execution and no longer requires objects to have unique names.

    New GUI while loading.

    As always the latest version - including new versions of the Example Project and the Test Harness are available from here.
     
  14. xandeck

    xandeck

    Joined:
    Apr 2, 2009
    Posts:
    563
    Really nice work, I will take a look for sure... keep it up!
     
  15. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    Thanks :) Still a work in progress but it's getting there...
     
  16. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    So I'm wondering whether it makes sense to release this project on the Asset Store when it's had a couple more weeks of testing. I've always released MIT licensed stuff on my blog before, but with Unity it feels like it should be an Asset Store download.

    So what I'm wondering is:

    * Is it easy enough to contribute new versions that it won't be a pain given I'm not making any money?
    * Is the Asset Store licensing compatible with the MIT license that I offer the project under at the moment?

    In addition I've got a FABRIK based IK Solver project and a State Machine/Blackboard Expert project that I'm considering releasing as fee based assets - so I'm probably going down the Asset Store route anyway at some point. Although I've been wondering about releasing those as MIT licensed assets and charging for the demos and extras like iTween.
     
  17. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
  18. PixelEnvision

    PixelEnvision

    Joined:
    Feb 7, 2012
    Posts:
    513
    Just downloaded, that looks very very useful with the added bonus of PlayMaker support. Thank you for making sharing that... I guess saved data might be quite big, how's the save load speed on iOS android?

    I'm sure you've seen this already, but just in case...

    http://www.previewlabs.com/writing-playerprefs-fast/
     
  19. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    The answer is "I don't know" for enough target cases yet - it is fine on my game, but I might want to improve the performance. I'm hoping to get some feedback and optimize where I need to.

    I only write PlayerPrefs at the end of the serialization process - but that process is quite heavyweight anyway (certainly the first time as it has to go and discover all of the properties of all of the classes that are fed into the stream and encode their types).

    The main serialization code is based on my SilverlightSerializer which performs comparably with the inbuilt BinaryFormatter and produces smaller files with a much faster load time. The Unity version is doing more work and can't use all of the fancy features to keep its compatibility with IOS (no ability to compile code on the fly).
     
  20. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    Also it's certainly worth only storing the things that matter and not things that would automatically recompute - my Angry Bots demo definitely overkills the amount of things which are saved - because I don't really know the Angry Bots code.
     
  21. PixelEnvision

    PixelEnvision

    Joined:
    Feb 7, 2012
    Posts:
    513
    I see, thx for the info... I'll just need to finish a project first and I'll do some tests on iPad1 Kindle and let you know, booth should be slow enough! :)

    Btw, (very very rough idea, just to share) regarding the things to save... Would be possible to use an editor script to pre-scan the project, display a list of items (with check boxes) to include/exclude and cache it for the run time use?
     
  22. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    Well it does that checkbox thing for Components.

    The best way to cache something for the actual properties and fields is just to do it once - you can do a save or load while the game starts up and then it will hold onto them. Can't really fully cache it and save because you might change a variable in a class held in a class inside a generic dictionary inside a class :) (Or something like that!)
     
  23. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    I’ve released version 0.5 of Unity Serializer. This enables support for adding SerializeField attributes to private fields without the need to decorate the class with a SerializeAll attribute. A number of bug fixes, including one significant one to do with the order that Start() methods were called on deserialized scripts.

    Available from here.
     
  24. Adam-Buckner

    Adam-Buckner

    Joined:
    Jun 27, 2007
    Posts:
    5,664
    I so much want to get a play with this.

    Thanks so much for sharing!
     
  25. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    Guess you are a little busy with the admin duties around the 4 launch :)

    I'm getting a decent number of downloads and a bit of feedback, so that's good! Thanks for your support :)
     
  26. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    You can now get Unity Serializer for free on the Asset Store.
     
  27. Adam-Buckner

    Adam-Buckner

    Joined:
    Jun 27, 2007
    Posts:
    5,664
    WoohoOO! Very nice. And Asset Store distribution as well!
     
  28. kenlem

    kenlem

    Joined:
    Oct 16, 2008
    Posts:
    1,630
  29. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    Yeah it's my state machine and AI framework. The state machines let you write straightforward readable code that works well with programmer driven ai - I use PlayMaker when I want state machines with a visual UI :)

    It also handles a concept called Orwellian State Machines - where controllers send actions to subordinates and they report back.

    The expert thing is quite neat - it lets you write AI code that votes on it's ability to perform some task. It lets multiple experts work together - so Expert 1 says "We need food go here", then another expert that knows how to walk says "I can get us there in x for y cost" and one that can ride a horse says "I can get us there in a for b cost". So your NPC rides a horse if it makes sense, or just walks if it is nearby.

    It's a bit more tricky than that really (and a lot more powerful) - but I haven't written a good example scene yet - I just use it in all my work.
     
  30. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    After popular demand I have added the ability to support iTweens to Unity Serializer. This requires an update to the base package (version 0.6 available on the website or the Asset Store). Then you download an extension from the web site.
     
    Last edited: Jun 21, 2012
  31. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    I've added a new version of the Unity Serializer that. Has improved support for JavaScript and includes an example JavaScript pause menu with loading and saving. Available on the asset store now.
     
  32. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    I've added a Wizard to Unity Serializer that lets you setup a scene in just a few minutes. There are also feature enhancements and bug fixes that make saving your game amazingly easy.

    Unity Serializer v0.7 is available on the web site and pending on the Asset Store.

    There is also a new video - showing the wizard and how to give Angry Bots a complete save game feature in less than 10 minutes.

     
  33. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    Unity Serializer beta v0.76 is available on my website. This version has significantly improved NavMeshAgent handling and much more robust Texture/Material/Clip references.
     
  34. wachi-kung

    wachi-kung

    Joined:
    Nov 18, 2009
    Posts:
    21
    So great!!
    How much is it in Asset store?
     
  35. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    It's free - everywhere :)
     
  36. wachi-kung

    wachi-kung

    Joined:
    Nov 18, 2009
    Posts:
    21
    Thank you in advance :)
     
  37. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    A new version of Unity Serializer with is available from my web site (and on the Asset Store) that has wizard extensions and bug fixes.
     
    Last edited: Jun 28, 2012
  38. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    I'm excited to announce that I've finally managed to find the time to add full material and texture saving to Unity Serializer - it will now store references and script generated materials and textures.

    The latest version also uses compression to keep down the file sizes.

    Available from here, pending on the Asset Store.

     
  39. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    Please note (presumably due to UDN changes) the asset store version of Unity Serializer is still 0.8 - this version has known issues concerning builds on mobile phone platforms - please use the one from the web site (0.84) for the present and I will update this thread once more when the asset store catches up :)
     
  40. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    0.84 is now available on the Asset Store.
     
  41. Kofthefens

    Kofthefens

    Joined:
    Jul 15, 2012
    Posts:
    30
    This is awesome! Thank you so much for putting such a powerful tool out there for free. However, being relatively new to Unity, a few things aren't working for me (No doubt stupid mistakes on my end). When I load a game I get these errors:


    Serialization error: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
    at System.Collections.Generic.Dictionary`2[System.Int32,System.Object].get_Item (Int32 key) [0x00000] in <filename unknown>:0
    at Serialization.UnitySerializer.DeserializeObject (Serialization.Entry entry, IStorage storage) [0x00186] in C:\Users\Kai\Desktop\Programming\Unity\100 degrees\Assets\Plugins\whydoidoit.com\Serialization\UnitySerializer.cs:1475
    at Serialization.UnitySerializer.DeserializeFields (IStorage storage, System.Type itemType, System.Object o) [0x0004a] in C:\Users\Kai\Desktop\Programming\Unity\100 degrees\Assets\Plugins\whydoidoit.com\Serialization\UnitySerializer.cs:2048
    at Serialization.UnitySerializer.DeserializeObjectAndProperties (System.Object o, System.Type itemType, IStorage storage) [0x00038] in C:\Users\Kai\Desktop\Programming\Unity\100 degrees\Assets\Plugins\whydoidoit.com\Serialization\UnitySerializer.cs:1903
    at Serialization.UnitySerializer.DeserializeObject (Serialization.Entry entry, IStorage storage) [0x00474] in C:\Users\Kai\Desktop\Programming\Unity\100 degrees\Assets\Plugins\whydoidoit.com\Serialization\UnitySerializer.cs:1569
    at Serialization.UnitySerializer.Deserialize (System.IO.Stream inputStream, System.Object instance) [0x0007c] in C:\Users\Kai\Desktop\Programming\Unity\100 degrees\Assets\Plugins\whydoidoit.com\Serialization\UnitySerializer.cs:925
    UnityEngine.Debug:LogError(Object)
    Radical:LogError(String, Object) (at Assets/Plugins/whydoidoit.com/Radical/System/Radical.cs:711)
    Radical:LogError(String) (at Assets/Plugins/whydoidoit.com/Radical/System/Radical.cs:700)
    Serialization.UnitySerializer:Deserialize(Stream, Object) (at Assets/Plugins/whydoidoit.com/Serialization/UnitySerializer.cs:971)
    Serialization.UnitySerializer:DeserializeInto(Byte[], Object) (at Assets/Plugins/whydoidoit.com/Serialization/UnitySerializer.cs:1013)
    <Load>c__Iterator1:MoveNext() (at Assets/Plugins/whydoidoit.com/Serialization/LevelLoader.cs:230)

    After I unpause after this error and a few more, it seems to have loaded well, except for the terrain (It's a terrainObject). I have StoreInformation attached to it.



    Thanks in advance, this thing is awesome.
     
  42. Ewanuk

    Ewanuk

    Joined:
    Jul 9, 2011
    Posts:
    257
    What you've done here is great. I'm a bit scared using it because I don't yet fully understand how it works or what exactly it's doing. I'm just following your video tutorial on this thread.

    I can get the system to work fine on simple objects (health pickups, etc.). However when I try to get the system to work with my player object. I get this error on attempting to save the game through the pause menu:


    NullReferenceException: Object reference not set to an instance of an object
    Serialization.UnitySerializer.WriteValue (System.IO.BinaryWriter writer, System.Object value) (at Assets/Plugins/LevelSerializer/Serialization/UnitySerializer.cs:2974)
    Serialization.BinarySerializer.WriteSimpleValue (System.Object value) (at Assets/Plugins/LevelSerializer/Serialization/SerializationUnits.cs:255)
    Serialization.BinarySerializer.WriteSimpleArray (Int32 count, System.Array array) (at Assets/Plugins/LevelSerializer/Serialization/SerializationUnits.cs:287)
    Serialization.UnitySerializer.SerializeArray (System.Array item, System.Type tp, IStorage storage) (at Assets/Plugins/LevelSerializer/Serialization/UnitySerializer.cs:2484)
    Serialization.UnitySerializer.SerializeObject (Serialization.Entry entry, IStorage storage, Boolean first) (at Assets/Plugins/LevelSerializer/Serialization/UnitySerializer.cs:2368)
    Serialization.UnitySerializer.SerializeObject (Serialization.Entry entry, IStorage storage) (at Assets/Plugins/LevelSerializer/Serialization/UnitySerializer.cs:2257)
    Serialization.UnitySerializer.WriteFields (System.Type itemType, System.Object item, IStorage storage) (at Assets/Plugins/LevelSerializer/Serialization/UnitySerializer.cs:2609)
    Serialization.UnitySerializer.SerializeObjectAndProperties (System.Object item, System.Type itemType, IStorage storage) (at Assets/Plugins/LevelSerializer/Serialization/UnitySerializer.cs:2631)
    Serialization.UnitySerializer.SerializeObject (Serialization.Entry entry, IStorage storage, Boolean first) (at Assets/Plugins/LevelSerializer/Serialization/UnitySerializer.cs:2387)
    Serialization.UnitySerializer.Serialize (System.Object item, System.IO.Stream outputStream, Boolean forDeserializeInto) (at Assets/Plugins/LevelSerializer/Serialization/UnitySerializer.cs:2169)
    Serialization.UnitySerializer.SerializeForDeserializeInto (System.Object item) (at Assets/Plugins/LevelSerializer/Serialization/UnitySerializer.cs:2206)
    LevelSerializer.<SerializeLevel>m__68 (.<>__AnonType4`2 cp) (at Assets/Plugins/LevelSerializer/Serialization/LevelSerializer.cs:720)
    System.Linq.Enumerable+<CreateSelectIterator>c__Iterator10`2[<>__AnonType4`2[StoreInformation,UnityEngine.Component],LevelSerializer+StoredData].MoveNext ()
    System.Collections.Generic.List`1[LevelSerializer+StoredData].AddEnumerable (IEnumerable`1 enumerable)
    System.Collections.Generic.List`1[LevelSerializer+StoredData]..ctor (IEnumerable`1 collection)
    System.Linq.Enumerable.ToList[StoredData] (IEnumerable`1 source)
    LevelSerializer.SerializeLevel (Boolean urgent) (at Assets/Plugins/LevelSerializer/Serialization/LevelSerializer.cs:676)
    LevelSerializer.CreateSaveEntry (System.String name, Boolean urgent) (at Assets/Plugins/LevelSerializer/Serialization/LevelSerializer.cs:285)
    LevelSerializer.PerformSave (System.String name, Boolean urgent) (at Assets/Plugins/LevelSerializer/Serialization/LevelSerializer.cs:443)
    LevelSerializer.SaveGame (System.String name, Boolean urgent, System.Action`2 perform) (at Assets/Plugins/LevelSerializer/Serialization/LevelSerializer.cs:435)
    LevelSerializer.SaveGame (System.String name) (at Assets/Plugins/LevelSerializer/Serialization/LevelSerializer.cs:411)
    PauseMenu.OnGUI () (at Assets/UnitySerializer/Scripts/PauseMenu.js:49)

    Part of me in considering using this system to handle environment objects and writing my own system to handle player information (inventory, health, etc.) if it comes to that.
     
  43. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    All a new version of Unity Serializer v0.9 has been released today and is pending on the asset store.
     
  44. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    @Ewanuk - it should be fine serializing your own stuff - it absolutely works for that in my game and we can get it working for yours- it is likely that something is being saved that shouldn't be or you've stumbled across some minor bug I can squash quickly :)

    In that case it appears to be saving an array and having a problem with something in it - what kind of arrays have you got going on in that script?
     
  45. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    @Kofthefens - I haven't done much about storing terrains (you probably don't need to store it I would think unless you are moving it? - it's probably a component on that which is complaining). Take off the store information on that and see what happens.

    I also fixed a bug in this area recently which may help - the error it is complaining about is to do with not being able to find an object it thinks it has "seen before". As in it believes that it should be able to reference another object then it is missing.
     
  46. mrbdrm

    mrbdrm

    Joined:
    Mar 22, 2009
    Posts:
    510
    this is really good especially the playmaker integration .
    keep it up :)
     
  47. Ewanuk

    Ewanuk

    Joined:
    Jul 9, 2011
    Posts:
    257
    Appreciate the support.

    I'll take apart the Player piece by piece and get to the root of it.
     
  48. Kofthefens

    Kofthefens

    Joined:
    Jul 15, 2012
    Posts:
    30
    I fixed the terrain, by having it have a UniqueIdentifier as opposed to a StoreInformation

    It's sort of confusing where to use UniqueIndentifier, StoreInformation, or PrefabIdentifier. In what circumstances do you use each?
     
  49. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    You use a UniqueIdentifier if you need to have a game object store a reference to something (so you want to store a reference that might change at runtime - like the target of a missile or something like that, which doesn't need to be saved itself). If you are not saving data and you are not changing the reference at runtime - it doesn't need anything. A UniqueIdentifier is most often used on objects that will hold instantiated prefabs at runtime, but don't themselves need anything storing. It basically lets the serializer find the object when it loads in data.

    A StoreInformation is for something that you want to save data on and isn't created at runtime directly. So the children of a root prefab will have StoreInformation and so will any objects that are in your scene that you need to save. This is the most common script. It does store everything by default and often you need to look at your code to decide which fields and properties need storing to successfully recreate the item.

    The most likely reason for a serialization failure is that you serialize one of your own scripts and it only saves the public properties and fields - but that leaves the script in a bad state when it loads because it also needs the values of some private variables that were set as the game ran. When this happens you need to work through the script, understand what variables need saving and make sure that they are flagged with SerializeField or that you have the script just save everything by using SerializeAll and then specifically turn off saving and loading for things with the DoNotSerialize attribute.

    Do not be surprised if the stuff fails the first time, just work through the variables and get a picture in your head about what the state of something might be after loading. Also you need to consider not setting things in Start() or Awake() if the game is being loaded (which you can check for by using LevelSerializer.IsDeserializing). At the end of the day - serialization is difficult because it is impossible to predict what you are doing in your own scripts, so unless they are basic, or you are using something like PlayMaker where all of the information is available it is likely you will have to do some work to make sure your scripts load well. This should of course not be a lot of work, will get much easier as you do a few and is a lot less work than trying to do the whole thing yourself :)

    PrefabIdentifier needs to be used on a prefab that will be instantiated at run time (the serializer uses the identifier to find which object needs loading when the game is brought back to life). This also stores the information on that object.
     
  50. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    Of course the other thing is that seeing people trying to use it is helping me make a plan for the documentation and guides for the released version. I'm not sure I've had enough feedback yet, but definitely getting close.