Get all variables from script as array

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));