How can I allow a player to select from multiple scenes to load?

I'd like for players to be able to select from an arbitrary number of levels to load from some kind of hub (teleporter, map, etc) using a graphical menu. How can I achieve this effect?

In the simplest sense, you would set up an action to trigger the visibility of your menu (using OnTriggerEnter, OnMouseDown, or the like). The GUI code would look something like the following:

var availableLevels : String[];
var windowWidth : int = 200;
var windowHeight : int = 200;
private var showMenu : boolean = false;

function TriggerAction () {  //Replace TriggerAction with your desired means of triggering the menu.
    showMenu = true;
}

function OnGUI () {
    if (showMenu) {
        GUI.Window(0, 
                   Rect((Screen.width / 2) - (windowWidth / 2), 
                        (Screen.height / 2) - (windowHeight / 2), 
                        windowWidth, 
                        windowHeight), 
                   LevelSelect, 
                   "Select a level!");  //Creates a window with ID 0 in the center of the screen using the function LevelSelect with the title, "Select a level!"
    }
}

function LevelSelect (id : int) {
    for (var levelName : String in availableLevels) {
        if (GUILayout.Button(levelName)) {
            Application.LoadLevel(levelName);
        }
    }
    if (GUILayout.Button("Cancel")) {  //Gives the player the opportunity to back out of the menu.
        showMenu = false;
    }
}

Create C# class with name LoadLevelOnTrigger.cs and paste following code to it:

using UnityEngine;
using System.Collections;

public class LoadLevelOnTrigger : MonoBehaviour {

    public string levelName;

    void OnTriggerEnter(Collider other) {
    	if (other.gameObject.tag == "Player") {
    		Application.LoadLevel(levelName);
    	}
    }
}

Add script to object with collider set to trigger, set levelName property in inspector and walk into the collider (the player must have Tag "Player"). That's it.

Add each scene you wish to include in the build settings for your game. Then however you are setting up selection of these levels, via a menu list or other wise, you launch the selected level using :

Application.LoadLevel("NameOfLevel");

There are a couple of other options for loading levels, but they either require Pro or are for multi segmented levels. You can find all the available functions here.

Not answering, just asking a question that involves the setup. burnumd wrote the code out, but what I am wanting to know with this question, is:

I have one jumpgate with locations (scenes): Vega & Alpha Centauri. Say I travel to A.C. now in that system, there is another gate, locations: Pegasus, Galnor & Bewlan. And in the previous gate: Sol.

Is this possible, and how would I set this up compared to the above code given by burnumd? Any help with this is greatly appreciated!