在Unity中使用C#的深度拷贝

网上看到别人在写这样一个方法,就尝试能够在Unity中使用该方法。

记住要使用的程序包:

using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

public object DeepCopy(object src)
{
MemoryStream ms = new MemoryStream();
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms, src);

ms.Seek(0, SeekOrigin.Begin);
object dst = bf.Deserialize(ms);
ms.Close();
return dst;
}

测试代码如下:

int[] temp = new int[] {1,2,3 };

        int[] copy = (int[])DeepCopy(temp);

        copy[1]=34;
        Debug.Log(copy[0]+":"+copy[1]+"--"+temp[0]+":"+temp[1]);

测试结果如下:

1:34--1:2

 

深度拷贝成功,这是使用对象序列化的方法实现的深度拷贝!

posted @ 2012-05-08 09:53  peiandsky  阅读(1865)  评论(0编辑  收藏  举报