- Home /
Question by
CaKeMeaT · Jan 18, 2015 at 10:21 PM ·
performanceongui
Iterating LList in OnGUI(), slow?
I am trying to come up with a solution for accessing and iterating through a linked list inside of the OnGUI loop. The performance takes a massive hit which is nearly impossible to use. I would prefer to keep my inventory as is without too much redesign but I imagine that working through the list each time the OnGUI calls is the problem.
I have tried a interval (every half second) and only creating the inventory once with a bool. Both of which have severe problems..
The below code is inside OnGUI()
//inv count number
int inv_count = inventory_script.count;
// start at head
inv_item current_item_to_display = inventory_script.head;
for (int c = 1; c <= inv_count; c++) {
//Debug.Log ("for loop, adding item");
// gui label for each inv item
GUI.Label (new Rect (inv_x, inv_y + (c * inv_h), inv_w, inv_h), "x" + current_item_to_display.quantity + " " + current_item_to_display.id_name + " $: " + current_item_to_display.value);
if(GUI.Button(new Rect (inv_x + inv_button_offset, inv_y + (c * inv_h), inv_w / 2, inv_h), "Drop")){
inventory_script.rmv_from_inventory(current_item_to_display.id_name);
update_inventory();
//Rect windowRect = new Rect(80, 80, 120, 50);
//windowRect = GUI.Window(0, windowRect, DoMyWindow, "My Window");
}
// next
if(current_item_to_display.next != null)
{
current_item_to_display = current_item_to_display.next;
}
} // end for
Comment
Your answer
Follow this Question
Related Questions
Filling image without compromises 0 Answers
Should I avoid OnGUI for mobile development? 3 Answers
iOS OnGUI vs Update for color picker 2 Answers
Are OnGUI calculations cached? 1 Answer