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

Posted

技术标签:

【中文标题】将 List<string> 中的元素转换为 C# (Unity3d) 中的 List<Texture>【英文标题】:Convert elements in List<string> to List<Texture> in C# (Unity3d) 【发布时间】:2011-06-22 05:27:38 【问题描述】:

我应该如何最好地转换

的元素
List<string> icons

到:

List<Texture> icons

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

【问题讨论】:

Texture类的定义是什么? This? unity3d.com/support/documentation/ScriptReference/Texture.html - 据我所知 - 我绘制的纹理类的唯一数据是名称和/或路径;因为这是 Unity 检查器要求您加载的唯一变量,并且它自然是普通列表中唯一的数据. 【参考方案1】:

您可以使用ConvertAll&lt;T&gt;

icons.ConvertAll<Texture>(s => new Texture(..whatever conversion...))

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

from s in icons select new Texture(...)

两者几乎可以归结为相同的。不同之处在于 LINQ 为您提供了一个 IEnumerable,它直接从字符串列表中汇集数据(无需创建新列表),因此非常适合一次性使用。如果您需要持久的纹理列表,请使用ConvertAll 或使用ToList() 固定IEnumerable

【讨论】:

以上是关于将 List<string> 中的元素转换为 C# (Unity3d) 中的 List<Texture>的主要内容,如果未能解决你的问题,请参考以下文章

将list中某个元素放到第一的位置改怎么做

将list中某个元素放到第一的位置改怎么做

将list集合中部分元素替换成指定元素该怎么做

java怎么创建一个数组,每个元素是一个数组

C# 使用 LINQ 将 List<string> 的所有元素替换为相同的模式

嵌套字典LINQ中的过滤元素