Ok so I am trying to create a save load feature. Still. I am trying to save a list of classes that define the name, position, and rotation of the components. But for some reason when I run it in unity it throws up flags claiming that I am not using an instance of an object.
the function in question goes as follows:
function AddNewPartData(newName : String, pos : Vector3, rot : Quaternion)
{
var NewPartData = new PartData();
NewPartData.PartName = newName;
NewPartData.PartPos = pos;
NewPartData.PartRot = rot;
ShipData.Add(NewPartData);
}
As you can see I declare the NewPartData as a new PartData object then try to put it in the list. That’s how you instance a non-monobehavior class right? Why is this not working?
Thanks in advance for any help provided
Full Code:
import System.Collections.Generic;
import System.Xml;
import System.IO;
@XmlRoot("ShipSave")
public class ShipSave
{
@XmlArray("ShipData")
@XmlArrayItem("Part")
public var ShipData : List.<PartData>;
function AddNewPartData(newName : String, pos : Vector3, rot : Quaternion)
{
var NewPartData = new PartData();
NewPartData.PartName = newName;
NewPartData.PartPos = pos;
NewPartData.PartRot = rot;
ShipData.Add(NewPartData);
}
function AddNewPartData(newName : String, pos : Vector3, rot : Quaternion, group : WeaponGroup)
{
var NewPartData = new PartData();
NewPartData.PartName = newName;
NewPartData.PartPos = pos;
NewPartData.PartRot = rot;
NewPartData.Group = group;
ShipData.Add(NewPartData);
}
public function Save(path : String)
{
//TODO if file already exists, delete it first then write new one
var serializer : XmlSerializer = new XmlSerializer(ShipSave);
var stream : Stream = new FileStream(path, FileMode.Create);
serializer.Serialize(stream, this);
stream.Close();
}
public static function Load(path : String):ShipSave
{
var serializer : XmlSerializer = new XmlSerializer(ShipSave);
var stream : Stream = new FileStream(path, FileMode.Open);
var result : ShipSave = serializer.Deserialize(stream) as ShipSave;
stream.Close();
return result;
}
//Loads the xml directly from the given string. Useful in combination with www.text.
public static function LoadFromText(text : String):ShipSave
{
var serializer : XmlSerializer = new XmlSerializer(ShipSave);
return serializer.Deserialize(new StringReader(text)) as ShipSave;
}
}
public class PartData
{
var PartName : String;
var PartPos : Vector3;
var PartRot : Quaternion;
var Group : WeaponGroup;
}