将下拉索引值作为枚举字段的值传递

时间:2016-03-12 07:34:18

标签: c# unity3d

我有一个带下拉列表的面板;我用它在我的项目中设置一个字段。

public class projectclass
{
    public enum mainpriority
    {
        basic,
        urgent,
        critical
    };
    public mainpriority _priorityfield { get; set;}


}

项目类对此字段使用枚举,因此要填充下拉列表,我会执行此操作,以填充它:

mydropdown.options.Clear();
foreach (projectclass._priorityfield priority in projectclass._priorityfield.GetValues(typeof(projectclass._priorityfield)))
{
    mydropdown.options.Add( new Dropdown.OptionData() {text = priority.ToString()});
}

这允许我在项目类的每个实例中显示dropbox中的字段。 在这个方向上一切都很好,但是如果我想做相反的事情(更改下拉列表中的值,并相应地更改类字段),我就无法使其工作。

主要问题是我尝试分配给类,值为int(这是我从dropdown.value()方法得到的),但是VS告诉我不可能设置_priorityfield使用int类型输入。

不是enum,相当于0,1,2 ..... n;所以你可以使用" basic"或0作为值?

这是我使用onValueChanged委托从下拉列表设置类实例值

private void UpdatePriority(Dropdown priority)
{
    int tempvalue = priority.value;
    projectclass_instance1._priorityfield = tempvalue;
}

我认为我可以传递一个int,但VS说这是不可能的。我可以将下拉列表的每个值映射到枚举中的条目,但我不确定它实际上是最佳解决方案。

1 个答案:

答案 0 :(得分:0)

感谢Ehsan的解决方案。

错误是因为我需要将int值转换为枚举类型,因此将正确识别该值。