In-game pop up radial menu? GUI vs GameObject

Super new to Unity, not to programming though.

I’m currently trying to make a pop up radial menu around my character. Think secret of mana. Right now I’m using onGUI to pop up some buttons. I’m going to want to make this menu nice and animated. Right now game time freezes and the menu pop ups like many RPGs.

Should I keep using a GUI or should I make this menu a gameobject of some sort with sprites that I pop up and maybe colliders to do an on click or something. I need to find a happy medium between functionality and prettiness.

Sorry for the newb question but this gui menu is bugging me out.

Thanks for any help.

GUI is old methods which someday will be removed. Unity.UI (GameObjects with Components like Button, Text) are a new way introduced relatively recently (in 4.6 Unity). Unity.UI supports animations on buttons so I guess that’s exactly what you seek?
As a temporary solution (if your project is large and you don’t want to redo it) you can mix GUI and UUI, but eventually I recommend to use UUI as it’s more powerful, easier to use and faster in learning and development.

Definitely use the new GUI system using a Canvas object with child panels and buttons. Maybe check out some tutorials if you’re unfamiliar.

Personally for something like that I’d use an Overlay canvas and buttons just to save the headache of manually doing the layering and click detection with colliders. UI Buttons are already setup for click detection and have the built in OnClick callback and hover states etc, so most of the work is done for you.

Doing the layout should be straightforward. Have a script on the parent of the buttons, which gets a reference to the buttons to position, either manually in the editor or through a GetComponentsInChildren() on Awake/Start.

Then OnEnable, Use the player’s position as the center using “WorldToScreenPoint(player.position)”, and then radially positioning the buttons at 360/numobjects for angles at a certain pixel radius away.

You could add smooth interpolation to the position setting later etc, starting them at the center and fanning outwards with a small delay between each object or something.

Wow such fast help and awesome answers. Thanks so much. This is one reason I chose Unity over other 2D solutions.