• 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
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

People who like this

0 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 assuming 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

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

People who like this

0 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.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

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

How to save a GameObject? 2 Answers

Serializing / deserializing large lists 0 Answers

How to save game objects? 3 Answers

Importing and exporting save files. 0 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