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