将静态列表分配给非静态列表

Assign static List to a non-static List

我来这里是因为我有一个关于 Unity 和 C# 的奇怪问题,我不知道如何解决这个问题。

我有两个 C# 脚本:

问题是这个非静态列表似乎是用 ScriptA.listOfPoints 更新的。当实例化此 ScriptB 时,我只想拥有一个等于 ScriptA.listOfPoints 状态的列表。

我做错了什么?

提前致谢:)

静态:

//ScriptA    
public static List<int> listOfPoints = new List<int>();
public static void pathUpdate() //get called every 2secs
{
    //listOfPoints is modified
}

敌人:

//ScriptB
private List<int> nonStaticListOfPoints = new List<int>();
void Start ()
{
    nonStaticListOfPoints = ScriptA.listOfPoints;
}

当您进行该赋值时,您并不是在创建两个列表,而是在创建两个变量,其中包含对同一列表的引用。

如果你想要列表元素的副本,你可以这样做this:

nonStaticListOfPoints = new List<int>(ScriptA.listOfPoints);

这将创建一个 new 列表并将列表中的元素复制到构造函数中,因此 nonStaticListOfPoints 现在可以独立于 listOfPoints 进行操作。