public class LEVELITEM { public string internalName = ""; public string objectName = ""; public Vector3 position = Vector3.zero; public float scale = 0.5f; public Vector3 rotation = Vector3.zero; public float direction = 180f; public float speed = 0f; public string serialize() { string str = ""; str += internalName; str += ";"; str += objectName; str += ";"; str += position.ToString(); str += ";"; str += scale.ToString(); str += ";"; str += rotation.ToString(); str += ";"; str += direction.ToString(); str += ";"; str += speed; return str; } public LEVELITEM() { } public LEVELITEM(string serializedString) { string[] arr = serializedString.Split(';'); if(arr.Length >= 7) { internalName = arr[0]; objectName = arr[1]; position = parseVector3(arr[2]); scale = Convert.ToSingle(arr[3]); rotation = parseVector3(arr[4]); direction = Convert.ToSingle(arr[5]); speed = Convert.ToSingle(arr[6]); } } Vector3 parseVector3(string sourceString) { // Trim extranious parenthesis sourceString = sourceString.Trim("()".ToCharArray()); // Split delimted values into an array string[] arr = sourceString.Split(','); // Build new Vector3 from array elements Vector3 vec = new Vector3(); vec.x = Convert.ToSingle(arr[0]); vec.y = Convert.ToSingle(arr[1]); vec.z = Convert.ToSingle(arr[2]); return vec; } } public void SaveItems() { try { string filename = Application.persistentDataPath + System.IO.Path.DirectorySeparatorChar + "level.dat"; System.IO.StreamWriter sw = new System.IO.StreamWriter(filename); foreach(LEVELITEM li in items) { sw.WriteLine(li.serialize()); } sw.Close(); } catch(System.Exception err) { Debug.LogError(err.ToString()); } } /* level.dat 58d10468-aeb1-42fa-8d84-3467c0812913;Meteoroid;(12.9, 0.0, 89.2);0.5;(24.4, -11.5, 27.4);198.6522;5.409011 4b75acc6-e446-4f63-a6ad-e8509360ff9f;Meteoroid;(-7.9, 0.0, 72.1);0.5;(-13.0, -38.2, -27.4);211.512;3.60364 ac4b00eb-e2a8-4fbc-9053-7e346f22aef9;Meteoroid;(16.6, 0.0, 50.7);0.5;(-1.7, -30.8, 28.0);180;0 */