Search Unity

Loading Level using RPC

Discussion in 'Multiplayer' started by GhostFrag1, Sep 1, 2014.

  1. GhostFrag1

    GhostFrag1

    Joined:
    Feb 9, 2014
    Posts:
    6
    I have been using networking recently in Unity and have been getting an error when using an RPC. Here is the code for my RPC Function.

    Code (csharp):
    1.  
    2.     [RPC]
    3.     void updateLevelOne(NetworkPlayer player, string LevelName)
    4.     {
    5.         Application.LoadLevel(levelOne);
    6.     }
    7.  
    Then this is where the RPC Function is being called:

    Code (csharp):
    1.  
    2.     void HostMenu(){
    3.         if (isHostMenu) {
    4.             GUI.Label(new Rect(leftIndent, 100, 200, 100), "Set up a Server", "Sub Menu Title");
    5.            
    6.             GUI.Label(new Rect(leftIndent, Screen.height / 2 - 100, 380, 50), "Server Port: ");
    7.             portNumber = int.Parse(GUI.TextField(new Rect(250, Screen.height / 2 - 110, 250, 50), portNumber.ToString()));
    8.            
    9.             GUI.Label(new Rect(leftIndent, Screen.height / 2 - 40, 380, 50), "Player Amount: ");
    10.             numberOfPlayers = int.Parse(GUI.TextField(new Rect(290, Screen.height / 2 - 50, 250, 50), numberOfPlayers.ToString()));
    11.            
    12.             if(GUI.Button (new Rect(leftIndent, Screen.height / 2 + 80, 250, 50), "Isolation")){
    13.                 multiplayerMap = levelOne;
    14.             }
    15.            
    16.             if(GUI.Button (new Rect(leftIndent + 260, Screen.height / 2 + 80, 250, 50), "Get Rekt")){
    17.                 multiplayerMap = levelTwo;
    18.             }
    19.            
    20.             if(GUI.Button(new Rect(leftIndent + 160, Screen.height - 60, 150, 50), "Start!")){
    21.                 Network.InitializeServer(numberOfPlayers, portNumber, true);
    22.                 networkView.RPC("updateLevelOne", RPCMode.AllBuffered, 2);
    23.                 isHostMenu = false;
    24.                 isConnectMenu = false;
    25.                 isMultiplayerMenu = false;
    26.             }
    27.         }
    28.     }
    29.  
    Then finally the error that is given to me when I try to use the start button:

    Code (csharp):
    1. Sending RPC failed because 'updateLevelOne' parameter 0 didn't match the RPC declaration. Expected 'UnityEngine.NetworkPlayer' but got 'System.Int32'
    2. UnityEngine.NetworkView:RPC(String, RPCMode, Object[])
    Any help will be appreciated. Thanks!
     
  2. Cha0os

    Cha0os

    Joined:
    Feb 22, 2014
    Posts:
    17
    Well, the procedure you are trying to call takes a Networkplayer argument and a string argument. You are passing an int to it. This obviously won't work.

    For an example on how to achieve what you are (presumably) trying to do, take a look at http://docs.unity3d.com/Manual/net-NetworkLevelLoad.html