Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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 Calvin_And_Hobbies · Dec 22, 2014 at 02:06 PM · listsaving

Saving a list without converting

Is there any way to save a list without converting it to another format? I'm making a sandbox type of game and I need a way to save a list of the blocks and their locations. Keep in mind I'm using C# and I'm a little bit of a newcomer to Unity.

Comment
Add comment · Show 3
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
avatar image RudyTheDev · Dec 22, 2014 at 12:10 AM 0
Share

Save during design- or run-time?

avatar image Calvin_And_Hobbies · Dec 22, 2014 at 04:27 AM 0
Share

At run time.

avatar image HuskyPanda213 · Dec 22, 2014 at 03:50 PM 0
Share

I don't know what you mean "without converting." If you mean you still want it as a list (I'm assu$$anonymous$$g a generic list), you must convert it to something to save it. In the editor you can you [SerializeField], but that only really works for objects when used in Editor (not in play mode).

What you could do and might be the simplest way is to write a small script to convert each block into a specific format, say: " ." You could then add another bit of code to convert that format back into the list object's type. Then it would be easy to save as a text file (StreamWriter and StreamReader).

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by techDev · Dec 22, 2014 at 03:57 PM

You can use a ScriptableObject, read the Documentation

1) You need to create a class that inherits from ScriptableObject not MonoBehaviour.

 using UnityEngine;
 using System.Collections.Generic;
 
 [System.Serializable]
 public class Values : ScriptableObject {
 
     public List<Transform> blocks;
     
 }

2) Then you need to create an instance of this class to create your own ScriptableObject, which should be done using Editor scripting, for example you can create a special menu to instantiate that object.

Create a new folder called "Editor" and create a class file inside that folder, the class should be something like this :

 using UnityEngine;
 using UnityEditor;

 public class GeneralEditorClass  {
   
     // Use this for initialization
 
     [MenuItem("Create/ScriptableObject")] //this will create a new menu item that will call the "createObject()" method.
     static void createScriptableObject () {
         Values v = ScriptableObject.CreateInstance<Values>(); // this method will create an instance of your ScriptableObject class
         AssetDatabase.CreateAsset (v, "Assets/MainValues.asset"); // create your asset in this location  "Assets/MainValues.asset"
         AssetDatabase.SaveAssets (); // save the asset
     }
 }

Now when you click the "ScriptableObject" item of the "Create" menu , a new scriptable object will show up in your "Assets" folder.

3) Using the ScriptableObject to save data in your script is easy, just create a public object of the "Values" class, and assign your Scriptable object to it, then what ever you do to that list will be saved.

 public Values values;
 
 values.blocks= new List<Transform>();

Comment
Add comment · Show 1 · 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
avatar image Calvin_And_Hobbies · Dec 22, 2014 at 05:41 PM 0
Share

Ok, thanks! I will try that next time I get to the computer.

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

6 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

A node in a childnode? 1 Answer

Serializing / deserializing large lists 0 Answers

Importing and exporting save files. 0 Answers

Argument out of range when checking at List[0], C# 1 Answer

Saving and loading array (/list) of integers locally 1 Answer


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