将List <string>中的元素转换为C#中的List <Texture>(Unity3d)

Chr*_*ris 1 c# unity-game-engine

我应该如何最好地转换元素

List<string> icons
Run Code Online (Sandbox Code Playgroud)

至:

List<Texture> icons
Run Code Online (Sandbox Code Playgroud)

我从XML文件中提取文件名(因此是初始字符串格式),但我想将文件名转换为纹理格式,因为它们是在运行时动态形成的,所以我无法从检查器加载.

mmi*_*mix 5

您可以使用 ConvertAll<T>

icons.ConvertAll<Texture>(s => new Texture(..whatever conversion...))
Run Code Online (Sandbox Code Playgroud)

或者您可以使用LINQ进行转换

from s in icons select new Texture(...)
Run Code Online (Sandbox Code Playgroud)

两个prety很多归结为相同.区别在于LINQ为您提供IEnumerable了直接从字符串列表中汇总数据(不创建新列表),因此它适用于一次性使用.如果您需要纹理的持久列表,请使用ConvertAll或固定IEnumerable使用ToList()