- Home /
NetworkLobbyManager doesn't retain message handlers after scene change?
I'm using NetworkLobbyManager (with DontDestroyOnLoad checked) in a Menu scene. When the game starts, I call NetworkManager.ServerSceneChange() and the new scene is loaded by the clients. However, message handlers that had worked before no longer work on the client. The NetworkLobbyManager is there, but the handlers don't work. Here is my client-side join game code:
public void joinGame(int p_iGame)
{
NetworkManager.singleton.matchMaker.JoinMatch(_matches[p_iGame].MatchInfo.networkId, "", "", "", 0, NetworkConstants.NET_VERSION, onMatchJoined);
}
private void onMatchJoined(bool success, string extendedInfo, MatchInfo responseData)
{
NetworkManager.singleton.StartClient(responseData);
NetworkManager.singleton.client.RegisterHandler(1002, MenuManager.Instance.onReceiveGameMetaData);
}
While in the Menu scene, this works and correctly calls onReceiveGameMetaData().
I use NetworkManager.ServerSceneChange() to load the game scene, and then when I use NetworkServer.SendToAll(1002, msg), I get:
Unknown message ID 1002 connId:1
on the client. Do these handlers not survive the scene change? I've also tried registering them after the scene change, but that also yields the same result. Any help would be appreciated. Network messages are an important part of the project I'm working on. Thank you!
Answer by stuey0016 · Oct 11, 2017 at 12:39 PM
I figured it out. The answer is pretty much the usual answer for questions like this...I'm an idiot. In my initial thrashings about while trying to learn and set up network play, I'd instantiated a new NetworkClient in my GameManager object to tell my server that the client was done loading the level and that it could start spawning objects. Naturally, creating a new instance would revert it back to its original set of message handlers. I went back to using NetworkManager.singleton.client for that function, and now the messages are now being received loud and clear by all clients every time.
Your answer
Follow this Question
Related Questions
How to call NetworkClient.Ready() ? 1 Answer
[UNET] Base scene objects are disabled for client 1 Answer
How to connect to server with a WebGL Build using Unity's Multiplayer Service, Unity 1 Answer
Unity Unet Lobby problem 0 Answers
How to fix OnObjSpawn netId: 1 has invalid asset Id when using Lobby example in existing project 0 Answers