Found a pretty simple and neat method for cloning the contents of a serializable class from one to another: http://stackoverflow.com/questions/78536/cloning-objects-in-c-sharp
Here's a copy of the script (for Unity use), to make your life easier:
Download
Given the serializable class:
[System.Serializable]
public class SimpleClass
{
publicint x;
publicint y;
publicint z;
}
and the situation:
// where you can change the value inside the inspector
public SimpleClass simpleClass;
private SimpleClass newSimpleClass;
protected void Start()
{
newSimpleClass = simpleClass;
newSimpleClass.x = 123;
Debug.Log(simpleClass.x); // return 123
}
If you're doing it this way, you're simply just referencing
simpleClass to
newSimpleClass.
And when you change the values inside newSimpleClass (x, y, or z), the values in simpleClass will change too.
Some may try to copy all the values one by one:
protected void Start()
{
newSimpleClass = simpleClass;
newSimpleClass.x = simpleClass.x;
newSimpleClass.y = simpleClass.y;
newSimpleClass.z = simpleClass.z;
}
It works fine, but it's "not a very elegant way of handling the situation".
Where you can just "clone" the contents from one serializable object to another:
protected void Start()
{
newSimpleClass = ObjectCopier.Clone(simpleClass);
newSimpleClass.x = 123;
Debug.Log(simpleClass); // shouldn't return 123
}