将静态列表分配给非静态列表
Assign static List to a non-static List
我来这里是因为我有一个关于 Unity 和 C# 的奇怪问题,我不知道如何解决这个问题。
我有两个 C# 脚本:
ScriptA 被实例化了一次并且有静态变量。它有一个包含路径点的静态列表。此列表随时间变化。
ScriptB 被实例化了几次(附加到敌人身上)。
在 Start() 上,它设置一个等于当前 ScriptA.listOfPoint
的非静态列表
问题是这个非静态列表似乎是用 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
进行操作。
我来这里是因为我有一个关于 Unity 和 C# 的奇怪问题,我不知道如何解决这个问题。
我有两个 C# 脚本:
ScriptA 被实例化了一次并且有静态变量。它有一个包含路径点的静态列表。此列表随时间变化。
ScriptB 被实例化了几次(附加到敌人身上)。 在 Start() 上,它设置一个等于当前 ScriptA.listOfPoint
的非静态列表
问题是这个非静态列表似乎是用 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
进行操作。