Unity3d 如果没有ID,如何处理基于语言可能具有不同值的下拉列表?

Unity3d 如果没有ID,如何处理基于语言可能具有不同值的下拉列表?,unity3d,localization,dropdown,Unity3d,Localization,Dropdown,我已经习惯了web开发,其中下拉列表有一个ID字段和文本。当文本可能因语言而异时,是否有适当的方法处理关联正确下拉值的问题 下拉列表可以有英语、日语或英语英語 及 日本人. 取决于当地方言。 在网络世界中,我会有ID 1和ID 2,而文本则无关紧要。有一些方法我可以看到绕过它,但希望有一个更干净的方法。有时会在一些地方使用一些相当大的列表 我看了一些本地化教程,但没有一个能解决下拉列表和本地化文本的问题 我可以在创建下拉列表时创建一个字典,或者(使用Sqlite)进行一些查询,但效率不如只拥有一

我已经习惯了web开发,其中下拉列表有一个ID字段和文本。当文本可能因语言而异时,是否有适当的方法处理关联正确下拉值的问题

下拉列表可以有英语、日语或英语英語 及 日本人. 取决于当地方言。 在网络世界中,我会有ID 1和ID 2,而文本则无关紧要。有一些方法我可以看到绕过它,但希望有一个更干净的方法。有时会在一些地方使用一些相当大的列表

我看了一些本地化教程,但没有一个能解决下拉列表和本地化文本的问题


我可以在创建下拉列表时创建一个字典,或者(使用Sqlite)进行一些查询,但效率不如只拥有一个与选项关联的唯一Id。

我这样做是为了我们的游戏。虽然不漂亮,但很管用

var index = 0;
MapDropdown.AddOptions(MapConfigs.Instance.Configs.Select((c, i) => {
    if(c.Id == config.Id) {
        index = i;
    }
    return new Dropdown.OptionData { text = c.Name  };
}).ToList());

MapDropdown.value = index;
MapChanged (index);
MapDropdown.onValueChanged.AddListener (MapChanged);

建议,但不是一个完美的解决方案:您可以使用一个称为LocalizableDataOption的类来扩展DataOption。您可以设置一个字段“key”并创建一个setter,这样当key被更改时,它也会将文本设置为与key关联的本地化文本。最后,当获得一个选项时,您可以将其强制转换为LocalizableDataOption并获得密钥。好主意,出于某种原因,我甚至没有想过尝试在Unity中扩展一个类。我先试试。塔克斯。