Question by 
               darkal · Feb 17, 2018 at 08:09 AM · 
                playerprefsloadsave dataconvert  
              
 
              Convert my playerpref back to obj
 So i have it set up to save my objects with the positions to player pref but i need help converting it from string it saves as back to object and transform.
So i have it set up to save my objects with the positions to player pref but i need help converting it from string it saves as back to object and transform.
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class ItemDB : MonoBehaviour {
 
     public bool save;
     public bool load;
 
     public GameObject[] ItemPrefabs;
     public GameObject[] TerrianDB;
     public GameObject[] ObjsDB;
     public Vector3[] ObjPos;
     public string[] saved;
     public string[] savedname;
     public string[] savedpos;
     public int savedlength;
     // Use this for initialization
     void Start() {
 
     }
 
     // Update is called once per frame
     void Update()
     {
         TerrianDB = GameObject.FindGameObjectsWithTag("TerrianObj");
         ObjsDB = GameObject.FindGameObjectsWithTag("Obj");
         ObjPos = new Vector3[ObjsDB.Length];
 
 
         for (int i = 0; i < ObjsDB.Length; i++)
         {
             ObjPos[i] = ObjsDB[i].transform.position;
         }
         if (load)
         {
             LoadDB();
         }
         if (save)
         {
             SaveDB();
         }
     }
 
     void LoadDB()
     {
         savedlength = PlayerPrefs.GetInt("Num");
         saved = new string[savedlength];
         savedname = new string[savedlength];
         savedpos = new string[savedlength];
         for (int i = 0; i < savedlength; i++)
         {
             saved[i] = PlayerPrefs.GetString("Data" + i.ToString());
             savedname[i] = PlayerPrefs.GetString("Data1" + i.ToString());
             savedpos[i] = PlayerPrefs.GetString("Data2" + i.ToString());
         }
         Spawn();
         load = false;
     }
 
     void Spawn()
     {
 
     }
 
     void SaveDB()
     {
         saved = new string[ObjsDB.Length];
         savedname = new string[ObjsDB.Length];
         savedpos = new string[ObjsDB.Length];
         PlayerPrefs.SetInt("Num", ObjsDB.Length);
 
         for (int i = 0; i < ObjsDB.Length; i++)
         {         
             PlayerPrefs.SetString("Data" + i.ToString(), ObjsDB[i].name + ":" + ObjPos[i].ToString());
             PlayerPrefs.SetString("Data1" + i.ToString(), ObjsDB[i].name);
             PlayerPrefs.SetString("Data2" + i.ToString(), ObjPos[i].ToString());
         }
         save = false;
     }
 }
 
                 
                desktop-2-17-2018-3-45-00-am-847.jpg 
                (422.7 kB) 
               
 
              
               Comment
              
 
               
              so i figured out how save the vector but still need help converting the object.name back to gameobject
  using System.Collections;
  using System.Collections.Generic;
  using UnityEngine;
  
  public class ItemDB : $$anonymous$$onoBehaviour {
  
      public bool save;
      public bool load;
  
      public GameObject[] ItemPrefabs;
      public GameObject[] TerrianDB;
      public GameObject[] ObjsDB;
      public Vector3[] ObjPos;
      public string[] saved;
      public string[] savedname;
      public Vector3[] savedvec;
      public int savedlength;
  
      // Use this for initialization
      void Start() {
  
      }
  
      // Update is called once per frame
      void Update()
      {
          TerrianDB = GameObject.FindGameObjectsWithTag("TerrianObj");
          ObjsDB = GameObject.FindGameObjectsWithTag("Obj");
          ObjPos = new Vector3[ObjsDB.Length];
  
  
          for (int i = 0; i < ObjsDB.Length; i++)
          {
              ObjPos[i] = ObjsDB[i].transform.position;
          }
          if (load)
          {
              LoadDB();
          }
          if (save)
          {
              SaveDB();
          }
      }
  
      void LoadDB()
      {
          savedlength = PlayerPrefs.GetInt("Num");
          saved = new string[savedlength];
          savedname = new string[savedlength];
          savedvec = new Vector3[savedlength];
          for (int i = 0; i < savedlength; i++)
          {
              saved[i] = PlayerPrefs.GetString("Data" + i.ToString());
              savedname[i] = PlayerPrefs.GetString("Data1" + i.ToString());
              savedvec[i].x = PlayerPrefs.GetFloat("Datax" + i.ToString());
              savedvec[i].y = PlayerPrefs.GetFloat("Datay" + i.ToString());
              savedvec[i].z = PlayerPrefs.GetFloat("Dataz" + i.ToString());
          }
          Spawn();
          load = false;
      }
  
      void Spawn()
      {
  
      }
  
      void SaveDB()
      {
          PlayerPrefs.SetInt("Num", ObjsDB.Length);
  
          for (int i = 0; i < ObjsDB.Length; i++)
          {         
              PlayerPrefs.SetString("Data" + i.ToString(), ObjsDB[i].name + ":" + ObjPos[i].ToString());
              PlayerPrefs.SetString("Data1" + i.ToString(), ObjsDB[i].name);
              PlayerPrefs.SetFloat("Datax" + i.ToString(), ObjPos[i].x);
              PlayerPrefs.SetFloat("Datay" + i.ToString(), ObjPos[i].y);
              PlayerPrefs.SetFloat("Dataz" + i.ToString(), ObjPos[i].z);
          }
          save = false;
      }
  }
 
               Best Answer 
              
 
              Answer by darkal · Feb 17, 2018 at 09:47 AM
So after trail and lots of Errors i figured out how do it with out having make separate database.
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class ItemDB : MonoBehaviour {
 
     public bool save;
     public bool load;
 
     public GameObject[] ItemPrefabs;
     public GameObject[] TerrianDB;
     public GameObject[] ObjsDB;
     public Vector3[] ObjPos;
     public string[] saved;
     public string[] savedname;
     public Vector3[] savedvec;
     public GameObject[] spawnobj;
     public int savedlength;
 
     // Use this for initialization
     void Start() {
 
     }
 
     // Update is called once per frame
     void Update()
     {
         TerrianDB = GameObject.FindGameObjectsWithTag("TerrianObj");
         ObjsDB = GameObject.FindGameObjectsWithTag("Obj");
         ObjPos = new Vector3[ObjsDB.Length];
 
 
         for (int i = 0; i < ObjsDB.Length; i++)
         {
             ObjPos[i] = ObjsDB[i].transform.position;
         }
         if (load)
         {
             LoadDB();
         }
         if (save)
         {
             SaveDB();
         }
     }
 
     void LoadDB()
     {
         savedlength = PlayerPrefs.GetInt("Num");
         saved = new string[savedlength];
         savedname = new string[savedlength];
         savedvec = new Vector3[savedlength];
         spawnobj = new GameObject[savedlength];
         for (int i = 0; i < savedlength; i++)
         {
             saved[i] = PlayerPrefs.GetString("Data" + i.ToString());
             savedname[i] = PlayerPrefs.GetString("Data1" + i.ToString());
             savedvec[i].x = PlayerPrefs.GetFloat("Datax" + i.ToString());
             savedvec[i].y = PlayerPrefs.GetFloat("Datay" + i.ToString());
             savedvec[i].z = PlayerPrefs.GetFloat("Dataz" + i.ToString());
         }
         for(int i = 0; i < ItemPrefabs.Length; i++)
         {
             for (int x = 0; x < savedname.Length; x++)
             {
                 if (ItemPrefabs[i].name == savedname[x].Replace("(" + x.ToString() + ")" ,"").Trim())
                 {
                     spawnobj[x] = ItemPrefabs[i];
                 }
             }
         }
         Spawn();
         load = false;
     }
 
     void Spawn()
     {
 
     }
 
     void SaveDB()
     {
         PlayerPrefs.SetInt("Num", ObjsDB.Length);
 
         for (int i = 0; i < ObjsDB.Length; i++)
         {         
             PlayerPrefs.SetString("Data" + i.ToString(), ObjsDB[i].name + ":" + ObjPos[i].ToString());
             PlayerPrefs.SetString("Data1" + i.ToString(), ObjsDB[i].name);
             PlayerPrefs.SetFloat("Datax" + i.ToString(), ObjPos[i].x);
             PlayerPrefs.SetFloat("Datay" + i.ToString(), ObjPos[i].y);
             PlayerPrefs.SetFloat("Dataz" + i.ToString(), ObjPos[i].z);
         }
         save = false;
     }
 }
 
Your answer
 
 
             Follow this Question
Related Questions
PlayerPrefs help ! 1 Answer
Saving In Between Scenes and Program Exit 0 Answers
Using PlayerPrefs to remember transform heirarchies? 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                