团结 |如何复制游戏对象的值而不是地址?
Posted
技术标签:
【中文标题】团结 |如何复制游戏对象的值而不是地址?【英文标题】:Unity | How to Copy the Values of a GameObject instead of it's address? 【发布时间】:2021-12-22 20:32:47 【问题描述】:例如: 列表 = a,b
private List<GameObject> FunctionName(List<GameObject> List)
List<GameObject> ListClone = List;
ListClone.RemoveAt(1);
return List;
输出:a
另一个例子:
GameObject a = GameObject b;
Destroy(b);
return a;
输出:空
我怎样才能复制值而不是地址,这样旧的对象就不会被它改变?
这就是原因,虽然没有什么能像它应该的那样工作,我需要解决所有问题,做任何事情都需要 10 倍的时间,所以请赐教。
【问题讨论】:
你应该研究一下引用类型和值类型的区别。这是一个开始:What is the difference between a reference type and value type in c#? 它没有链接任何东西...您分配b
的引用并将其存储在一个名为a
的变量中... =>它们现在都指向同一个对象... Se对于您的列表示例...听起来您应该阅读一些非常基本的 c# 和一般的面向对象编程教程;)
@RetiredNinja 我做到了,但是我现在怎么才能只将值而不是方向分配到同一点?
你要克隆对象:dotnetcoretutorials.com/2020/09/09/…
【参考方案1】:
如果要复制内存地址:
List<GameObject> A = B;
如果要复制内存地址的值:
List<GameObject> A = new List<GameObject>(B);
【讨论】:
以上是关于团结 |如何复制游戏对象的值而不是地址?的主要内容,如果未能解决你的问题,请参考以下文章
如何让 VBA 函数存储单元格地址值而不是这些单元格地址处的值