So in my multiplayer game, you start out at the main menu. If you click the button to join a specific map, you go there. I have put that in there by using a simple Application.LoadLevel("Map1"); But when I load the level it just sits there at the standbyCamera and doesn't Join/Create a room like it usually does. Now when I start at the map scene it does the usual and creates/joins a room... Where am I going wrong??
You should try to isolate Menu scene and try with empty scene with just a script that does Application.LoadLevel to your map and that's it and see if it has something to do with the menu scene.
Well it sounds like your level is loading because your camera loads. It must be something with your network script that starts whenever your scene is created.
Code (csharp): using UnityEngine; using System.Collections; public class LevelLoader : MonoBehaviour { public string[] supportedNetworkLevels = new string[] {"Start", "Menu", "Map1"}; public string disconnectedLevel = "Menu"; [HideInInspector] public int lastLevelPrefix = 0; void Awake() { if(Application.loadedLevelName == "Start") { Application.LoadLevel("Menu"); } // Network level loading is done in a separate channel. DontDestroyOnLoad(this); GetComponent<NetworkView>().group = 1; Application.LoadLevel(disconnectedLevel); } void OnGUI() { GUI.Label(new Rect(100, 0, 200, 200), "Prefix: " + lastLevelPrefix); } public void Load(string level) { GetComponent<NetworkView>().RPC("LoadLevel", RPCMode.AllBuffered, level, Random.Range(0,9999)); } [RPC] void LoadLevel (string level, int levelPrefix) { MasterServer.UnregisterHost(); lastLevelPrefix = levelPrefix; // There is no reason to send any more data over the network on the default channel, // because we are about to load the level, thus all those objects will get deleted anyway Network.SetSendingEnabled(0, false); // We need to stop receiving because first the level must be loaded first. // Once the level is loaded, rpc's and other state update attached to objects in the level are allowed to fire Network.isMessageQueueRunning = false; // All network views loaded from a level will get a prefix into their NetworkViewID. // This will prevent old updates from clients leaking into a newly created scene. Network.SetLevelPrefix(levelPrefix); Application.LoadLevel(level); StartCoroutine(DelayLoad(level)); } IEnumerator DelayLoad(string level) { yield return new WaitForSeconds(0.05f); //This is when the new map has been loaded // Allow receiving data again Network.isMessageQueueRunning = true; // Now the level has been loaded and we can start sending out data to clients Network.SetSendingEnabled(0, true); GameObject[] gos = FindObjectsOfType(typeof(GameObject)) as GameObject[]; for (int i = 0; i < gos.Length; i++) { gos[i].SendMessage("OnNetworkLoadedLevel", SendMessageOptions.DontRequireReceiver); } } void OnDisconnectedFromServer () { Application.LoadLevel(disconnectedLevel); } } Create an empty scene named Start, and have only one object in there with this script attached (and a network view component). Then go to build settings and make sure that the Start scene is the first to load, and make sure to start the game from the Start scene. The disconnected scene, put your Menu scene name there. Just make sure you dont load the Start scene by accident. To load the map over the network just call this script and do Load("MyMapName"), make sure that the map you load is in the supported network levels.