我如何从两个列表中创建一个字典,这与iOS和其他Unity平台兼容
本文关键字:iOS 这与 其他 Unity 字典 平台 创建 两个 列表 一个 | 更新日期: 2023-09-27 18:19:22
我在一些Unity文档中读到Dictionary
是不可序列化的,所以不能从编辑器修改。提示使用两个List
,然后使用它们来创建Dictionary
:
提示:Unity不会序列化Dictionary,但是你可以存储一个List<>表示键,List<>表示值,并将它们缝在non中
然而,我似乎找不到这样做的文档。到目前为止,我有以下内容:
public List<string> someKeys;
public List<Sprite> someValues;
private void Awake()
{
someDictionary = new Dictionary<string, Sprite>();
}
someKeys
和someValues
在Unity编辑器中设置和填充相同数量的元素。当然,someKeys
中的元素0是someValues
中元素0的键,其他键也是如此。如何使用它们来创建someDictionary
中的键和值?
Update:我从重复标记中看到,这已经用Linq
回答了,作为c#的新手,我还没有使用过,但肯定似乎可以完成这项工作。但这在Unity中是否安全,特别是在运行iOS的设备上?此外,这种方法是否更好(即更快和/或被认为比使用标准for
循环更好)?
注意:我想通过键访问someValues
中的Sprite
s,而不是通过数字索引。
Dictionary
类是一个泛型类,第一个类型参数对应于键的类型,第二个类型参数对应于值的类型。
所以字典应该是这样的:Dictionary<string, Sprite>
然后,可以使用Dictionary.Add(key, value)
方法添加(Key, Value)对
那么这里,你将有:
for (int numItem = 0; numItem < someKeys.Count; numItem++)
dictionary.Add(someKeys[numItem], somevalues[numItem]);
但首先要确保someKeys.Count == someValues.Count
。
你也可以使用LINQ,但似乎iOS对LINQ的支持有限(参见在构建iOS时使用LINQ - Unity Answers)