您的位置:首页 > 移动开发 > Unity3D

Unity3D + C#: Cloning the Content of a Serializable Class

2013-02-07 23:37 381 查看

Unity3D + C#: Cloning the Content of a Serializable Class

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

The ObjectCopier script provided by user "johnc", was a much more elegant way of doing it.

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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐