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

本文介绍了如何使用ObjectCopier脚本来在Unity中轻松克隆Serializable类的内容,避免了手动复制属性的繁琐过程,提高了效率。

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
}

转载于:https://www.cnblogs.com/shawnzxx/archive/2013/02/07/2909054.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值