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

本文介绍了一种在Unity中实现对象深度拷贝的方法,通过序列化和反序列化过程完成,确保了拷贝对象与原对象完全独立。测试示例验证了其有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上看到别人在写这样一个方法,就尝试能够在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

 

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

转载于:https://www.cnblogs.com/peiandsky/archive/2012/05/08/2489621.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值