Instantiate UI gameobject on collision from a queue

I have a UI image and text (child component) that instantiate and move upward after a player collides with a game object. It shows them (the player) what they have collected and the value of the item. However if they collect multiple objects at the same time (or relatively close) then the UI objects overlap each other as they move off screen and destroy. How can I get them to queue and instantiate after the previous one has had time to move up?

C# Script

The first two lines of the function add a value to another UI text game object and are not an issue. The value and the text are passed from another prefab through another script on collision, it calls this function.

//called when player picks up loot
	public void AddMoney(int amount, string lootName)
     {
		levelMoney += amount;
		UI_levelMoney.GetComponent<Text> ().text = "$" + levelMoney;
		UI_textMessages = (GameObject) Instantiate (UI_textMessagesPreFab, UI_textMessagesPos, Quaternion.identity);
		UI_textMessages.transform.SetParent(UI_canvasInGame.transform, false);
		UI_textMessages.transform.GetChild(0).gameObject.GetComponent<Text>().text = lootName + " $" + amount;
     }

public List Queue; //Drag and drop objects into this list in the inspector

public void InstantiateQueue()
{
if (Queue.Count == 0) return;
Instantiate(Queue[0]);
Queue.Remove(Queue[0]);
}