how to get a different game mode?

So I’ve been making a pong game and wanted to add different game modes, so I have a main menu and an options menu in which you can change the game mode to 1 player, 2 player, and the different sort of game modes, but how do I get it so that when I press play in my main menu that it knows what gameplay they chose and that it goes to that gamemode? under here is my code for the main menu, the options menu only has script for the music.

    public void Start()
    {
        GameObject.FindGameObjectWithTag("gameMusic").GetComponent<MusicClass>().PlayMusic();
    }
    public void PlayGame ()
    {
        SceneManager.LoadScene("ball");
    }
    public void QuitGame ()
    {
        Debug.Log("Quit");
        Application.Quit();
    }

Start with simple tutorials for making a menu with multiple gamemodes.

This guy covers it pretty well in the section on game managers and UI flow and app state:

So i’m looking through his video and I don’t completely understand it, where is his script? How do I know where to put my script or which one to use? And it looks like it justs shows some text when something happens, not how to change the game from playing normal game mode but that they chose special game mode, and then press play to get that mode instead of normal pong which you normally get as you can see in my code up above. Am I looking at the wrong part of the video?

You won’t find “a script.”

If you follow these two steps you may learn how to do it:

Tutorials and example code are great, but keep this in mind to maximize your success and minimize your frustration:

How to do tutorials properly, two (2) simple steps to success:

Step 1. Follow the tutorial and do every single step of the tutorial 100% precisely the way it is shown. Even the slightest deviation (even a single character!) generally ends in disaster. That’s how software engineering works. Every step must be taken, every single letter must be spelled, capitalized, punctuated and spaced (or not spaced) properly, literally NOTHING can be omitted or skipped.
Fortunately this is the easiest part to get right: Be a robot. Don’t make any mistakes.
BE PERFECT IN EVERYTHING YOU DO HERE!!

If you get any errors, learn how to read the error code and fix your error. Google is your friend here. Do NOT continue until you fix your error. Your error will probably be somewhere near the parenthesis numbers (line and character position) in the file. It is almost CERTAINLY your typo causing the error, so look again and fix it.

Step 2. Go back and work through every part of the tutorial again, and this time explain it to your doggie. See how I am doing that in my avatar picture? If you have no dog, explain it to your house plant. If you are unable to explain any part of it, STOP. DO NOT PROCEED. Now go learn how that part works. Read the documentation on the functions involved. Go back to the tutorial and try to figure out WHY they did that. This is the part that takes a LOT of time when you are new. It might take days or weeks to work through a single 5-minute tutorial. Stick with it. You will learn.

Step 2 is the part everybody seems to miss. Without Step 2 you are simply a code-typing monkey and outside of the specific tutorial you did, you will be completely lost. If you want to learn, you MUST do Step 2.

Of course, all this presupposes no errors in the tutorial. For certain tutorial makers (like Unity, Brackeys, Imphenzia, Sebastian Lague) this is usually the case. For some other less-well-known content creators, this is less true. Read the comments on the video: did anyone have issues like you did? If there’s an error, you will NEVER be the first guy to find it.

Beyond that, Step 3, 4, 5 and 6 become easy because you already understand!

Finally, when you have errors, don’t post here… just go fix your errors! Here’s how:

Remember: NOBODY here memorizes error codes. That’s not a thing. The error code is absolutely the least useful part of the error. It serves no purpose at all. Forget the error code. Put it out of your mind.

The complete error message contains everything you need to know to fix the error yourself.

The important parts of the error message are:

  • the description of the error itself (google this; you are NEVER the first one!)
  • the file it occurred in (critical!)
  • the line number and character position (the two numbers in parentheses)
  • also possibly useful is the stack trace (all the lines of text in the lower console window)

Always start with the FIRST error in the console window, as sometimes that error causes or compounds some or all of the subsequent errors. Often the error will be immediately prior to the indicated line, so make sure to check there as well.

Look in the documentation. Every API you attempt to use is probably documented somewhere. Are you using it correctly? Are you spelling it correctly? Are you structuring the syntax correctly? Look for examples!

All of that information is in the actual error message and you must pay attention to it. Learn how to identify it instantly so you don’t have to stop your progress and fiddle around with the forum.

You need to store the game mode setting somewhere, and branch your logic depending on the setting. Though, it would be a lot simpler to just have different buttons to enter different game modes, rather than making it a setting.

public byte gameMode;

public void Start()
    {
        GameObject.FindGameObjectWithTag("gameMusic").GetComponent<MusicClass>().PlayMusic();
    }
    public void PlayGame ()
    {
if(gameMode==1){ SceneManager.LoadScene("ball");}
  if(gameMode==2){ SceneManager.LoadScene("ball2players");}
    }
    public void QuitGame ()
    {
        Debug.Log("Quit");
        Application.Quit();
    }

okay so I’ve been looking if I could get this working and I understand that in my script the rest should look something like this
if (button “2 players” == clicked)
{
gameMode == 1;
}
and for the others it’s kind of the same. But how do I know when which button is pressed? since I have multiple buttons, and how do I properly write that down? I, again, can’t find this online. I can find multiple things of how buttons being pressed works but not with multiple buttons.

Because the button responder function that you hooked up will make note of it in a variable that persists until it is needed later.

That’s how. Seriously. That’s it.

In other words, it is EXACTLY what Spiney wrote above:

If you don’t immediately go “Oh yeah, I get it,” when you read that, then it is clear you are not even attempting to do the simplest steps of learning how these fundamental pieces work in Unity.

This is really really really SUPER simple stuff at the lowest level, but if you refuse to familiarize yourself with it, it’s gonna seem really really complicated.

Go work through some tutorials, as already suggested above.

Imphenzia: How Did I Learn To Make Games:

https://www.youtube.com/watch?v=b3DOnigmLBY

public byte buttonType;

I don’t understand what a ‘public byte’ is or what it exactly does, which I know probably causes this problem, but I also don’t understand how to hook up the buttons to the game mode’s. I know that that didn’t happen yet, since now the game doesn’t work. that is what i’m asking, how do I hook up the buttons? how do I make the computer know which button is pressed?

you can go in the inspector and on each button you change it to a different number on the byte, 0, 1, 2, 3, 4 and then on your code you make different behavior depending on the value