Show List Content as GUI.Label on Update()

So I have this class:

class PlayerAction {
	var actionName : String;
}

and I have a List that uses several items of this class.
This list grows and shrinks throug the game and I want to display all the elements in the GUI for debug so I added this code :

		for (var action : PlayerAction in playerInteractions.globalActions){
			GUI.Label (Rect (400, 400, 200, 20), action.actionName);
		}

But this makes the Labels overlap when being displayed.
I also tried something like this:

var positionPadding = 0;

for (var action : PlayerAction in playerInteractions.globalActions){
	GUI.Label (Rect (400, positionPadding , 200, 20), action.actionName);
	positionPadding += 20;
}

But then the value keeps adding without stopping since its running in OnGUI()…

So my question is, how can I display the contents of a list on the GUI?

UPDATE:

So this is the cleanest solution I found so far (by multiplying the iteration variable with the position that gets added outside), still wondering if there is a better way to do it:

for (var i = 0; i < globalActions.Count; i++){		
	GUI.Label (Rect (valuePadding, positionYTotal + i * 15, 200, 20), i+1 + ". " + globalActions*.actionName + selectedObject);*
  • }*

Hi,

Two suggestions.

1- It might be simpler to use the debug log rather than GUI. If you don’t want too much logging, you could only log when you press the key “d” for example.

2- If you prefer GUI, place a GUIText component in the scene where you want the text to appear, and set its text as follows:

public GUIText textComponent;

public void Update() {
    string txt = "";
    for (var action : PlayerAction in playerInteractions.globalActions){
        txt += action.actionName + "

";
}
textComponent.text = txt;
}