ValueDropdownAttribute

ValueDropdown is used on any property and creates a dropdown with configurable options.

Use this to give the user a specific set of options to select from.

namespace Sirenix.OdinInspector
{
public class ValueDropdownAttribute : Attribute
}

Requirements

Namespace: Sirenix.OdinInspector
Assembly: Sirenix.OdinInspector
Version: 1.0.5.0

See Also

Constructors

Definition Description
ValueDropdownAttribute(string) Creates a dropdown menu for a property.

Properties

Return Type Definition Description
string MemberName Name of any field, property or method member that implements IList. E.g. arrays or Lists.

Example

The following example shows a how the ValueDropdown can be used on an int property.

public class MyComponent : MonoBehaviour
{
	[ValueDropdown("myValues")]
	public int MyInt;

	// The selectable values for the dropdown.
	private int[] myValues = { 1, 2, 3 };
}

Example

The following example shows how ValueDropdownList can be used for objects, that do not implement a usable ToString.

public class MyComponent : MonoBehaviour
{
	[ValueDropdown("myVectorValues")]
	public Vector3 MyVector;

	// The selectable values for the dropdown, with custom names.
	private ValueDropdownList<Vector3> myVectorValues = new ValueDropdownList<Vector3>()
	{
		{"Forward",	Vector3.forward	},
		{"Back",	Vector3.back	},
		{"Up",		Vector3.up		},
		{"Down",	Vector3.down	},
		{"Right",	Vector3.right	},
		{"Left",	Vector3.left	},
	};
}

Example

The following example shows how the ValueDropdown can on any member that implements IList.

public class MyComponent : MonoBehaviour
{
	// Member field of type float[].
	private float[] valuesField;

	[ValueDropdown("valuesField")]
	public float MyFloat;

	// Member property of type List<thing>.
	private List<string> ValuesProperty { get; set; }

	[ValueDropdown("ValuesProperty")]
	public string MyString;

	// Member function that returns an object of type IList.
	private IList ValuesFunction()
	{
		return new ValueDropdownList<int>
		{
			{ "The first option",	1 },
			{ "The second option",	2 },
			{ "The third option",	3 },
		};
	}

	[ValueDropdown("ValuesFunction")]
	public int MyInt;
}

Example

Due to a bug in Unity, enums member arrays will in some cases appear as empty. This example shows how you can get around that.

public class MyComponent : MonoBehaviour
{
	// Make the field static.
	private static MyEnum[] MyStaticEnumArray = MyEnum[] { ... };

	// Force Unity to serialize the field, and hide the property from the inspector.
	[SerializeField, HideInInspector]
	private MyEnum MySerializedEnumArray = MyEnum[] { ... };
}