【问题标题】:Pass a dropdown index value as value for an enum field将下拉索引值作为枚举字段的值传递
【发布时间】:2016-03-12 16:37:19
【问题描述】:

我有一个带有下拉菜单的面板;我用来在我的项目中设置一个字段。

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 类型。

不是枚举,相当于0,1,2.....n;所以您可以使用“基本”或 0 作为值?

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

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

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

【问题讨论】:

  • 你必须投它:(mainpriority)tempvalue
  • 就是这样;铸造它将消除错误。它不会更新类实例中的原始值,但这是一个不同的问题;我可以解决这个问题。谢谢。

标签: c# unity3d


【解决方案1】:

感谢 Ehsan 的解决方案。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 2011-04-24
    • 2011-09-13
    • 2021-07-25
    相关资源
    最近更新 更多