I am creating a tap game where the player has to tap multiple different objects to get exp. However, which would be better to use, in terms of speed and performance? A button with the appropriate sprite, or a gameobject, with script to determine the next step?
It’s a po-tay-toh / po-tah-toh issue.
There is a behind-the-scenes button prefab. When you create a button from the editor menu, as GameObject → UI → Button, the Unity engine simply makes a copy of that prefab and puts it in the Heirarchy for your scene. If you like, you can look at the button in the heirarchy, and see that it is a collection of several gameobjects and their attached components (including a sprite, a script, and a couple other things).
Basically, the Unity team noticed that game developers very often want to have button-type things in their games, and so they created this built-in button out of scripts and gameobjects in order to make life easier for us game developers.
If the built-in button does what you need, you should use it, because it will save you time. If it doesn’t do what you need, then you should create your own button.