As someone who's just spent over a month creating an inventory system, perhaps my menu system can give you some ideas.
At its base, you have categories. Within each category, you can have multiple menu items -- items the player can select to view details about, and perhaps perform an action with.
Categories can have parent categories, too.
Consider the following screenshots. Player's character has approached a merchant NPC and is wanting to buy something.
My interface above is made using GUITextures and GUITexts. The logic is stored in classes and lists. I also use this interface system for my main menu and various options.
A pseudo breakdown of the different classes involved might look like this:
menuItems (List of MenuItem)
The above makes up the logic of the menu system. The trick is to then have your GUI:
- Interpret the details of the current
- Display each
MenuItem contained in
- Highlight the current
- Display the details/description of the
selectedMenuItem. Perhaps interpret its
correspondingGameObject to choose what to display (maybe it's a weapon, or a potion, or something else).
- Display the available action based on what
selectedMenuItem.action is set to.
- Process user input, whether to set
selectedMenuItem to a different
MenuItem, or execute the current item's
The GUITextures don't change much -- it's the GUITexts that get edited depending on what the player has selected.
Now, this merchant NPC's top-level category is just one of several top-level categories. Your game's main menu could be a top-level category, with child categories like options, save game files, etc. A high score category could be its own top-level category, or could be a child category of something else.
Just a matter of having, say, a menu controller class that is in charge of knowing when to display what, and ensuring menus don't overlap with each other; I have a few other "menu" systems that don't follow the above structure, so a controller class handles what to show. End of the day, it's really up to you, as there's no right or wrong way of doing it.
Hope this helps!