I am writing a custom Editor window (no run-time implementation needed)
- I need to get all properties\variables of a script(MonoBehavior) as an array.
- From any script I need to be able to call this function (if there is a function for it).
- Giving either the type of variable I need, or having them returned generically.
So my question is :
How can I, with script, get all variables in a script of a spesific type ?
eg. :
script.GetVariablesOfType(int) : int
or generically :
script.GetVariables() : object
(I use javascript)
If you’re extending the Editor class, you have access to a SerializedObject for the component(s) you’re inspecting. This exposes a GetIterator method, which you can use this to iterate over all serialized properties on the object.
My Javascript is a bit rusty, so I’ll use C# for this example so I’m less likely to make a mistake. Here’s one way to get a collection of all properties that have integer values, or the integer values themselves:
List<SerializedProperty> intProperties = new List<SerializedProperty>();
List<int> intPropertyValues = new List<int>();
SerializedProperty property = serializedObject.GetIterator();
do
{
if(property.type == typeof(int).ToString())
{
intProperties.Add(property.Copy());
intPropertyValues.Add(property.intValue);
}
} while (property.Next(false));