Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 11 Next capture
2021 2022 2023
1 capture
11 Jun 22 - 11 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by Morgondag · Jul 29, 2015 at 02:05 PM · savesave datapropertiescompareclass instance

Future compatible saveClass?

Creating a basic savefile on start i set the currentData either to the content from a savefile or create default values from a new class and saves that to file.

So the next time the game is loaded we have either default values or the ones saved on file.

 // shortened sudo-code
 void Awake(){
     if(saveFileExists){
         currentData = (saveData)binaryFormater.Deserialize(file);
     } else {
         currentData = new saveData();
     }
 }
 public void saveAll(){
     FileStream file = File.Create(savePath);
     bf.Serialize (file, currentData);
     file.Close();
 }


here is the saveData from lets say version 1.0

 [Serializable]
 public class saveData {
     public float test1 = 0.1f;
 }
 

But I might want to add fields to the default saveData when I add new content ending up with a saveData file that looks like this:

 [Serializable]
 public class saveData {
     public float test1 = 0.1f;
     public bool hasSomething = false;
 }


However when I then load data from my save file it obviously doesn't contain the field

 // public bool hasSomething = false;


How do i proceed checking the saveFile if it has the propertie?

I tried using something like

 FieldInfo[] allFields = typeof(saveData).GetFields(BindingFlags.Instance | BindingFlags.NonPublic|BindingFlags.Public);


to get all the available fields in the class. But when i check if the field exist in the savefile it returns falls even to the ones that exists.

What is the routine here? or do simply check if the savefile has missing fields and then applying the default value to them?

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by etopsirhc · Jul 29, 2015 at 04:47 PM

i'd go with making 2 save classes, the first would be the parent class, and would simply have the save version. the second would be the class that contains the actual save data and extend from the other. when you load it you check the version through the main save class, then cast it to the proper class that has your data stored.

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

3 People are following this question.

avatar image avatar image avatar image

Related Questions

Android, How can I permanently save data? (A couple variables) 4 Answers

Is there a way to save a 2D characters path and replay it on respawn? 0 Answers

Save&load 100% works on pc, but not on android! 1 Answer

Best practice: Save informations 0 Answers

Saving Player Data 3 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges