团结 |如何复制游戏对象的值而不是地址?

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 函数存储单元格地址值而不是这些单元格地址处的值

求一个关于团结的小游戏

快速点击时如何使游戏对象速度不断增加

提交文本框的值而不重新加载页面

如何在运行时将onclick侦听器添加到游戏对象统一[重复]

团结游戏统计节省