I’m working on an inventory system. When the player right-clicks an item, it displays some dropdown list of options, “Use”, “Equip”, etc.
Currently the inventory is a grid of buttons. When I right click on a button, the dropdown list appears and I start to use labels instead of actual buttons so that it appears as if the buttons are disabled. Now the issue is that, I want the dropdown to disappear when the player clicks somewhere else other than the list’s buttons. Here’s the dropdown list code - they’re just a bunch of buttons wrapped with a box:
public int Draw()
{
if (entries == null)
{
Debug.Log("Something wrong with entries...");
return -1;
}
float totalHeight = GetTotalEntriesHeight();
float x_offset = spaceBetweenButtons * 4;
float y_offset = spaceBetweenButtons * 4;
GUI.Box(new Rect(position.x, position.y, entryDimensions.x + x_offset, totalHeight + y_offset), "", defaultMenuBackgoundStyle);
int entryIndex = -1;
for (int i = 0; i < entries.Count; i++)
{
// offsetting x by spaceBetweenButtons and y by the height of the entry * i + the space between buttons
bool entryButtonPressed = GUI.Button(new Rect(position.x + x_offset / 2, position.y + i * entryDimensions.y + y_offset / 2, entryDimensions.x, entryDimensions.y), entries*, defaultEntryStyle);*
if (entryButtonPressed)
{
entryIndex = i;
shouldBeShown = false;
break;
}
}
return entryIndex;
}
I tried something like this:
//…
if(Input.GetMouseButtonDown(0) // and even GetMouseButton
{
shouldBeShown = false;
if (entryButtonPressed)
{
entryIndex = i;
break;
}
//…
Now this does hide the list when the player clicks on somewhere else, but for some reason the entryButtonPressed is always false
and I get some strange behavior when the player clicks on a button that’s directly above the item. So this is definitely not working, also tried repositioning this check in more than one place, all showed the same issue…
I recently knew there’s something called a GUIUtility but I don’t know how to use it, that is, if I’m supposed to use it. Any help would be appreciated, thanks in advance