To serialize a collection - a generic list, array, dictionary, or your own custom collection - simply call the serializer with the object you want to get JSON for.
How to Save and Load a Game in Unity
NET will serialize the collection and all of the values it contains. To deserialize JSON into a. NET collection, just specify the collection type you want to deserialize to. NET supports a wide range of collection types. Using Json. NET generic dictionary. The JSON object's property names and values will be added to the dictionary.
NET Documentation. Serialization Settings. Serialization Guide. Serialization Attributes. Serialization Callbacks. Serialization Error Handling. Preserving Object References. Serializing Collections. Conditional Property Serialization.
The dark mode beta is finally here. Change your preferences any time. Stack Overflow for Teams is a private, secure spot for you and your coworkers to find and share information.
Here's the objects I'm working with:. Here's how it's being built:. Why isn't it serializing anything? I've tested it out, and serializing a single SpriteData does exactly what it's supposed to do, but it won't work in the SpriteDataCollection.
Not including [Serializable]. You get empty json if you don't include this. Your json is multi array which JsonUtility does not support and needs a wrapper to work. The problem looks like 1. You are missing [Serializable] on the the classes. You must add using System; in order to use that. Like the example, given above in the SpriteData class, the variable must be a public variable.
If it is a private variable, add [SerializeField] at the top of it. If still not working then your json is probably invalid. Read "4. That should give you inside on how to fix this. Learn more. Asked 3 years, 2 months ago. Active 2 years, 6 months ago. Viewed 29k times. Log JsonUtility. Matthew Fournier Matthew Fournier 2 2 gold badges 9 9 silver badges 25 25 bronze badges.
Active Oldest Votes. There are 4 known possible reasons why you may get empty Json in Unity. JsonUtility does not support this. Trying to serializing a collection other than List.For example, you can use JSON Serialization to interact with web services, or to easily pack and unpack data to a text-based format.SCRIPTABLE OBJECTS in Unity
For example:. This defines a plain C class containing three variables leveltimeElapsedand playerName and marks it with the Serializable attribute, in order to work with the JSON serializer. To create an instance of your class, you can use something like this:. Then use the JsonUtility.
FromJson :. If the JSON data is missing values for fields in MyClassthen the serializer leaves the constructed values for those fields in the returned object.
That is, navigating and editing the JSON as an arbitrary tree of key-value pairs. If you need to do this, you should look for a more fully-featured JSON library.
This method allows you to keep allocations to a minimum by reusing objects that you created previously. If you try to use FromJsonUnity throws an exception because this beahvior is not supported.
Unity does not support passing other types directly to the API, such as primitive types or arrays. If you need to convert those, wrap them in a class or struct of some sort. Object both to and from JSON. Benchmark tests indicate that JsonUtility is significantly faster than popular. However, as with any multithreaded code, be careful not to access or alter an object on one thread while another thread is serializing or deserializing it.
It is off by default but you can turn it on by passing true as the second parameter. Then deserialize a second time into that type. Version: Language : English. Unity Manual. Unity User Manual Publication Date: Discussion in ' Scripting ' started by hellpiratAug 3, Search Unity.
Log in Create a Unity ID. Unity Forum. Forums Quick Links. Asset Store Spring Sale has begun! Unite Now has started! Come level up your Unity skills and knowledge. Come post your questions! How can I save data from List via PlayerPrefs? Joined: Jun 12, Posts: Hello, everybody. Can you get me some examples how save List via PlayerPrefs?
Joined: Jun 29, Posts: 6, You can't. LaneFoxAug 3, Joined: Nov 12, Posts: Count.
Subscribe to RSS
Joined: Jun 3, Posts: SomeGuy22Aug 3, PlayerPrefs are not meant to save game objects or even whole game states. It is possible in theory but you would end up using some serialization and put that into the variables as string Player prefs are for some settings you want to save between sessions, such as audio volume If you wanna save more complex data you should use a serializer for that. I would recommend to use a Json serializer because json is readable and they seem to become the non-official standard for this purpose.
If you don't want to spend money, you can use MiniJson Not sure how good it is If you can spend money, I would recommend Json. Joined: Jul 19, Posts: 32, Use ArrayPrefs2. It works with arrays rather than Lists, but it's trivial to convert List to array when saving and array to List when loading.
The dark mode beta is finally here. Change your preferences any time. Stack Overflow for Teams is a private, secure spot for you and your coworkers to find and share information. I have a game where the player picks up a weapon and it is then placed as the GameObject variable to my player called "MainHandWeapon" and I am trying to save that weapon through scene changes so I am trying to save it.
How I handle this is as follows :. Unity claims that is possible in their API documentation but it's not. You can deserialize other fields. You can serialize GameObject as xml. This can serialize GameObject without any problem. It saves the data in human readable format. If you care about security or don't want players modifying scores on their own devices, you can encryptconvert it into binary or Base format before saving it to the disk. Unity won't let you do it because a Gameobject comprises of all the scripts attached to it.
For instance mesh renderers, colliders etc. If you wanted to say serialize the Tranform, you could get around this you by making a new Vector3 position, Vector3 scale, Vector4 quaternion and serialize that out instead and then on deserialization feed this data into a new Transform for instance.
But attempting to serialize the actual mesh data which is associated with the mesh renderer would prove quite the complex task. Better off probably just serializing an int or something which represents a mesh ID and then transmuting this to the correct reference on load. Ideally you should have an object which hold the weapon data attack, durability, etc Learn more.
Asked 3 years, 11 months ago. Active 3 years, 11 months ago. Viewed 24k times.
Note that File. Create 'Creates' or 'Overwrites' a file. Create Application. GameObject is not marked as Serializable. What exactly am I doing wrong? JoeyL JoeyL 1, 3 3 gold badges 21 21 silver badges 41 41 bronze badges. I hope this is of some help. Joey, you have to do it "by hand". It's that simple. Note that the so-called "Serialization" class is almost totally useless; it's just not for that purpose.
You say "I am trying to save that weapon through scene changes There is utterly no need, whatsoever, to save or serlalize it. Active Oldest Votes.Discussion in ' Scripting ' started by ItzChris92Aug 15, Search Unity.
Log in Create a Unity ID. Unity Forum. Forums Quick Links. Asset Store Spring Sale has begun! Unite Now has started! Come level up your Unity skills and knowledge. Come post your questions!
Json utility - save and load a list Discussion in ' Scripting ' started by ItzChris92Aug 15, Joined: Apr 26, Posts: As the title says. And then how can I load this list, and save it when I need to?
Also, on topic, I know json utility works with Lists, but how does it handle serializing derived classes?
For example, using the code above, if I had a public class SomeClass, and then a public class OtherClass : SomeClass and the list above contained both of these. ItzChris92Aug 15, Joined: Aug 21, Posts: Use File. ToJson class ; File. Add new SomeClass constructor variables here.
OrenBaba likes this. I work with deserialization a lot, but I can't say I have been working with the JsonUtility and deserialization of derived types that much. Maybe it's a good idea to create a demo project which tests only that. I'd try it for you right now, but I've got some other bugfixing to do. Okay so I got this working, however I was right about the derived class issue.
Going to try and derive from ScriptableObject and see if this fixes the issue. Last edited: Aug 16, Seems weird that you wouldn't be able to. In the message you made before you edited it you should try to make a wrapping class containing the array, and de serializing that instead.Discussion in ' Scripting ' started by IntDevDec 23, Search Unity.
Log in Create a Unity ID. Unity Forum. Forums Quick Links. Asset Store Spring Sale has begun! Unite Now has started! Come level up your Unity skills and knowledge. Come post your questions! How to load an array with JsonUtility? Joined: Jan 14, Posts: I have a json array like this: Code CSharp :. IntDevDec 23, Joined: Jul 25, Posts: Did you make the json yourself? PolymorphikDec 23, Nothing different. If I print. Lenght it says Joined: Jan 16, Posts: 4, Joined: Sep 14, Posts: 4.
Thanks for the instructions Richard, Can you give an example on how to retrieve value for individual key such that a row has more than one key and its respective values. Last edited: Feb 3, Rakesh likes this. Code csharp :. Serializable ]. Arshdaahad1briank and 3 others like this. Joined: Dec 17, Posts: I made this helper method to wrap a json around a class, this way you don't need to change code on the server for accommodating the json top-level array problem.
Code CSharp :. Last edited: Mar 9, Joined: Nov 27, Posts: 4. Took me a while to notice that FromJson doesn't work if the class members are defined as properties. Meizi-GamesMar 22, Correct; same as the Inspector. Joined: Apr 4, Posts: 1. I wrote a little workaround: Code CSharp :. Takisat4atafferretnt and 21 others like this. Joined: Apr 8, Posts: 1.
Joined: May 21, Posts: