2 回答

TA貢獻1712條經驗 獲得超3個贊
GameObject.FindGameObjectsWithTag返回一個GameObjects數組。
C#中的數組是一種數據結構,用于存儲相同類型的多個對象。
一個列表是對象的泛型集合。
盡管數組和列表在概念上非常相似,但是兩者在數據訪問和使用方面有所不同。通常,數組在創建時只會填充一次,之后只能讀取,而List可以隨時更改其元素(有一些注意事項)。
這個StackOverflow問題總結了為什么您可能想要另一個:Array vs List <T>:何時使用哪個?
在您的特定情況下,您想對您的GameObject集合應用一些Linq排序,因此您需要將接收FindGameObjectsWithTag到的數組轉換為列表。
您可以通過多種方式來執行此操作。最簡單的方法是在列表上使用構造函數重載來一次分配整個數組:
GameObject[] gameObjectArray = GameObject.FindGameObjectsWithTag("Player");
List<GameObject> gameObjectList = new List<GameObject(gameObjectArray);
其他一些選項在這里可用:System.Array到List的轉換

TA貢獻1936條經驗 獲得超7個贊
正如史蒂夫(Steve)正確解釋的那樣,但我想以不同的方式回答:
實際上,在您的代碼中,您是將數組類型對象(GameObject.FindGameObjectsWithTag("Player")
)分配給列表類型(List<GameObject> pList
)對象,而編譯器并不隱式支持該對象。您必須將列表轉換為數組類型:
List<GameObject> pList = new List<GameObject>(GameObject.FindGameObjectsWithTag("Player"));
之后,您將可以使用您的代碼。
現在問題的第一部分
我不明白兩個列表之間的區別。
實際上,您是在詢問不同的黑白數組和列表,并且需要記住的主要區別是,當您具有固定長度的數據時,則應使用數組,如果數據長度可變,則應使用列表。
- 2 回答
- 0 關注
- 249 瀏覽
添加回答
舉報