diff options
Diffstat (limited to 'Assets/ThirdParty/AdvancedInspector/Examples/CSharp/AIExample19_Restrict.cs')
-rw-r--r-- | Assets/ThirdParty/AdvancedInspector/Examples/CSharp/AIExample19_Restrict.cs | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/Assets/ThirdParty/AdvancedInspector/Examples/CSharp/AIExample19_Restrict.cs b/Assets/ThirdParty/AdvancedInspector/Examples/CSharp/AIExample19_Restrict.cs new file mode 100644 index 00000000..0b162a4d --- /dev/null +++ b/Assets/ThirdParty/AdvancedInspector/Examples/CSharp/AIExample19_Restrict.cs @@ -0,0 +1,46 @@ +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; + +using AdvancedInspector; + +[AdvancedInspector] +public class AIExample19_Restrict : MonoBehaviour +{ + // Unlike other "dynamic" attributes, the Restrict attribute can only work in "dynamic" mode. + // The restrict attribute limits - or restrict - the data that can be input in a field. + // This is quite useful when you want to limit what can be selected. + [Inspect, Restrict("ValidFloats")] + public float[] myFloat; + + private IList ValidFloats() + { + return new float[] { 0, 2, 4, 6, 8, 10 }; + } + + // The restrict attribute can display the choices as a drop down list, a collection of button, or a toolbox popup + // The toolbox popup is quite useful when you have a high number of choices and you want the user to search in them. + [Inspect, Restrict("ValidStrings", RestrictDisplay.Toolbox)] + public string myString; + + private IList ValidStrings() + { + return new string[] { "A", "AA", "A+", "B", "BB", "B+", "C", "CC", "C+", "D", "DD", "D+", "E", "EE", "E+" }; + } + + // Another huge advantage of Restrict, is that you can build your own list of object. + // If you have ScriptableObject, you can do Resources.LoadAll and return a list of those. + // Or you can do FindAll for a specific type. + // Note that you can also add "null" in your collection for the user to "unselect" an object. + [Inspect, Restrict("GetObjects")] + public MonoBehaviour[] myObjects; + + private IList GetObjects() + { + List<MonoBehaviour> collection = new List<MonoBehaviour>(); + collection.Add(null); + collection.AddRange(GetComponents<MonoBehaviour>()); + return collection; + } +} |