2 回答

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

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