Skip to main content

OnSessionList Updated is not Called

โ“ Key Question

  • why this problem happen ?

โœ… Expected Output/Definition of Done

  • clear problem and solution definition on this issue

๐ŸŽ Results

UploadINetworkRunnerCallback Inneed Progressto be registered / added into network runner in order to network runner to execute the callback within photon event flow.

in order to properly attach a runner callback into network runner you need to add itโ€™s callback before expecting the callback to be called.

public class BasicSpawner : MonoBehaviour, INetworkRunnerCallbacks
{
  public void OnPlayerJoined(NetworkRunner runner, PlayerRef player) { }
  public void OnPlayerLeft(NetworkRunner runner, PlayerRef player) { }
  public void OnInput(NetworkRunner runner, NetworkInput input) { }
  public void OnInputMissing(NetworkRunner runner, PlayerRef player, NetworkInput input) { }
  public void OnShutdown(NetworkRunner runner, ShutdownReason shutdownReason) { }
  public void OnConnectedToServer(NetworkRunner runner) { }
  public void OnDisconnectedFromServer(NetworkRunner runner) { }
  public void OnConnectRequest(NetworkRunner runner, NetworkRunnerCallbackArgs.ConnectRequest request, byte[] token) { }
  public void OnConnectFailed(NetworkRunner runner, NetAddress remoteAddress, NetConnectFailedReason reason) { }
  public void OnUserSimulationMessage(NetworkRunner runner, SimulationMessagePtr message) { }
  public void OnSessionListUpdated(NetworkRunner runner, List<SessionInfo> sessionList) { }
  public void OnCustomAuthenticationResponse(NetworkRunner runner, Dictionary<string, object> data) { }
  public void OnHostMigration(NetworkRunner runner, HostMigrationToken hostMigrationToken) { }
  public void OnReliableDataReceived(NetworkRunner runner, PlayerRef player, ArraySegment<byte> data) { }
  public void OnSceneLoadDone(NetworkRunner runner) { }
  public void OnSceneLoadStart(NetworkRunner runner) { }
}
// separate script that add the callback into network runner
public class SceneControl : MonoBehaviour
{
	public NetworkRunner runner;
	public BasicSpawner spawner;
	private void Start()
	{
		// adding callback before expecting callback from runner action
		runner.AddCallbacks(spawner);
		// doing runner actions
		runner.JoinSessionLobby(/* . . . */);
	}
}