簡體   English   中英

將靜態列表分配給非靜態列表

[英]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;
}

進行該分配時,您不是在創建兩個列表,而是在兩個變量中保存對同一列表的引用。

如果您想要列表元素的副本,可以執行以下操作

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

這將創建一個列表,並復制傳遞到構造函數的列表中的元素,因此現在可以獨立於listOfPoints來操縱nonStaticListOfPoints

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM