【问题标题】: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 我做到了,但是我现在怎么才能只将值而不是方向分配到同一点?

标签: unity3d gameobject


【解决方案1】:

如果要复制内存地址:

List<GameObject> A = B;

如果要复制内存地址的值:

List<GameObject> A = new List<GameObject>(B);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    相关资源
    最近更新 更多