Creating a dynamic list in OnGUI

So I’m going to try to be as clear as possible here.

I have an inventory system in place currently and it’s pretty simple:

#pragma strict

private var showINV : boolean = false;

static var inventoryArray : int[] = [1];

function Update () {
	if(Input.GetKeyDown(KeyCode.Tab)){
		showINV = !showINV;
	}
}

function OnGUI() {
	if(showINV == true){
	 	GUI.Box(Rect(0,0,150,150),"Inventory");
	}else{
		return;
	}
}

That is on my player object. I also have a pickup item script on my player that looks like this:

#pragma strict

function Update() {
	var cam : Transform = Camera.main.transform;
    var ray = new Ray(cam.position, cam.forward);
    var hit : RaycastHit;
    if(Input.GetKeyDown(KeyCode.E)){
    	if(Physics.Raycast (ray, hit, 10)){
    		if(hit.collider.tag == "log"){
    			Inventory.inventoryArray[0]++;
    			Destroy(hit.collider.gameObject);
    			Debug.Log("You picked up a log");
    		}
    	}
    }
}

Now, what i am trying to do is make it so that whenever I pick up an item, it will add a label to my inventory GUI, then if i pick up another item, it creates a new label below that a couple of pixels.

I wanted to dive right into it and after 20 minutes I figured i had planned myself into oblivion. I’m just looking for a simple way to do this. If anyone can help or at least point me in the right direction it would be very much appreciated. I really hope all this makes sense.

Thanks in advance.

For a dynamic array you should use a 1 rather than an array. Use a loop in OnGUI to display the List; using GUILayout is simplest so you don’t have to calculate the rects.