Unity Editor - Class variable value contrain

I am using a Custom Editor Inspector for my MonoBehaviour class and I would like to know I it’s possible to constrain a variable. Let me illustrate this with an example.

Let’s imagine I have an integer value but I would like to authorize only some values in the Inspector like 1, 5, 99, whatever.

I would like to know if there is way to do that for any type of variables using editor features. I know that I can define an Enum or use a Dictionnary with some index but is there another way ?

Thanks a lot.

Use a List of int or an array(int nums), get the selected index and return the number from the List/array/Collection.

You can certainly use a custom editor to constrain your variable however you wish. Here is an example of a simple class and editor, where we constrain the public int field to even inputs:


using UnityEngine;

public class Foo : MonoBehaviour
	public int Bar;


using UnityEngine;
using UnityEditor;

public class FooEditor : Editor
	public override void OnInspectorGUI()
		Foo foo = (Foo)target;

		foo.Bar = EditorGUILayout.IntField("Bar", foo.Bar);
		foo.Bar = ConstrainBar(foo.Bar);
	int ConstrainBar (int bar)
		return (int)Mathf.Round((float)bar/2.0f) * 2;

We don’t really constrain the variable, but instead create an editor that will apply a function to the variable when it is set in the editor. If you want to constrain the variable in code as well, you could have a simple property and apply the constraints in the setter.

Unfortunately, properties (getters/setters) don’t play nice with the inspector by default. There are some hackneyed ways of exposing a property in the inspector, but it’s often unnecessary.

Setup an enumerator like this

enum TheNumbers


enum TheOtherNumbers