Adding TextField after another by Y

GUI.BeginGroup (new Rect (30, 117, 380, 280));
        GUI.skin = craftSkin;
        GUI.Box (new Rect (0, 0, 380, 280), "");
        slider = GUI.VerticalSlider(new Rect(10, 10, 360, 260), slider, 10.0F, 0.0F);
        GUI.TextField (new Rect (25, 10, 345, 20), "TEXT1");
        GUI.TextField (new Rect (25, 10, 345, 20), "TEXT2");
        GUI.TextField (new Rect (25, 10, 345, 20), "TEXT3");
        GUI.TextField (new Rect (25, 10, 345, 20), "TEXT4");
        GUI.EndGroup ();

I want to add TEXT2 after TEXT1 on Y axis etc… or when i remove TEXT2, TEXT3 get TEXT2 position, it must be dynamically add / remove by Y axis

Do you consider about using GUILayout instead of GUI?

Guess it’s better to use GUILayout rather than GUI - Unity - Scripting API: GUILayout
There’s a tutorial linked on that page as well.

Here is solution with GUI.

string[] texts = new string[] {"TEXT1", "TEXT2", "TEXT3", "TEXT4"};

float strokeHeight =  30;
for(int i = 0; i < texts.Lenght; i++)
{
   GUI.TextField (new Rect (25, 10 + strokeHeight * i, 345, 20), texts[i]);
}

But in my opinion, GUILayout is more siutable for the such cases.

        GUI.skin = craftSkin;

        GUILayout.BeginArea (new Rect (30, 117, 380, 280));
        GUILayout.Box ("", GUILayout.Width (380), GUILayout.Height (280));
        GUILayout.BeginVertical();
        GUILayout.TextField ("Text 1", GUILayout.Width (345), GUILayout.Height (20));
        GUILayout.EndVertical();
        GUILayout.EndArea ();

Nothing ;/ Text have to be in the box.

NVM, it’s working now, thanks for help ! :smile: