Is it possible to add a variable to inspector dynamically at run time?

I’m looking for a way to add to the inspector from a static (user defined array) to use on another class, using food for example:

public class myClass
{
    public string[] food;
    //User adds 'oranges', 'apples', 'bannanas' in inspector.
}

public class Human
{
    //dynamically populate what is found in myClass.food into the inspector, Eg.
    int Orange; 
    int Apple; 
    int bannanas;
}

So essentially it creates this array in the inspector without having to manually type it:
85060-screenshot-5.png

The reason I am trying to do it this way (Though it seems weird) is because I need one place for the artist to create these values in the inspector. That stay the same throughout the project.

The artist needs to create these food’s and the amounts dynamically. I can’t just use a var for each of these foods. Eg, myClass.orange = 10;

Even if you tell me what to look for I can check it out, anything helps.
Thanks!

No, the way you want it is impossible.

You simply need to use arrays or generic lists. If you make an array of structs with fields: string name and someType value, you can name the array elements and the array elements will be displayed with it’s unique name instead of “Element x”.

Make sure all the values you want to be in inspector are public, including struct definition. Also, your struct has to have [System.Serializable] above it. This way the array of structs will be displayed in the inspector.

Then you can write an editor script which displays the array elements without the need to expand the array as well as some buttons like add, remove, insert between.

Alternatively, you can also take a look at this. But it is undocumented and can break between unity versions.