1. We're looking for feedback on Unity Starter Kits! Let us know what you’d like.
    Dismiss Notice
  2. Unity 2017.2 beta is now available for download.
    Dismiss Notice
  3. Unity 2017.1 is now released.
    Dismiss Notice
  4. Introducing the Unity Essentials Packs! Find out more.
    Dismiss Notice
  5. Reddit AMA with Adam Myhill on Cinemachine, Thurs July 27 - 10AM PT. More info.
    Dismiss Notice
  6. Check out all the fixes for 5.6 on the patch releases page.
    Dismiss Notice
  7. Help us improve the editor usability and artist workflows. Join our discussion to provide your feedback.
    Dismiss Notice

What's wrong ? ( trying to use networkView.group )

Discussion in 'Multiplayer Networking' started by meanruz, Jul 30, 2012.

  1. meanruz

    meanruz

    Joined:
    Feb 21, 2012
    Posts:
    7
    Hello,

    I'm trying to use networkView.group to clear some part of my code but I think I didn't understand how it's works .... (and the documentation is a little lite http://docs.unity3d.com/Documentation/ScriptReference/NetworkView-group.html )

    There's my Client code
    Code (csharp):
    1. using UnityEngine;
    2. using System.Collections;
    3.  
    4. public class Client : MonoBehaviour {
    5.    
    6.     public GameObject prefab;
    7.    
    8.     int selectedGroup;
    9.    
    10.     bool connected = false;
    11.        
    12.     void OnGUI()
    13.     {
    14.         if( !connected )
    15.         {
    16.             if( GUILayout.Button( "Join Group 11" ) )
    17.             {
    18.                 selectedGroup = 11;
    19.                
    20.                 connectToServer();
    21.             }
    22.            
    23.             if (GUILayout.Button( "Join Group 12" ) )
    24.             {
    25.                 selectedGroup = 12;
    26.                
    27.                 connectToServer();
    28.             }
    29.         }
    30.         else
    31.         {
    32.             if( GUILayout.Button( "MOVE" ) )
    33.             {
    34.                 networkView.RPC( RPC_MOVE, RPCMode.Server, networkView.group );
    35.             }
    36.         }
    37.     }
    38.    
    39.     void connectToServer()
    40.     {
    41.         Debug.Log( "connectToServer" );
    42.         Network.Connect( "192.168.1.16", 25000, "secret" );
    43.     }
    44.    
    45.     void OnConnectedToServer()
    46.     {
    47.         connected = true;
    48.         networkView.group = selectedGroup;
    49.    
    50.         int forbidengroup;
    51.        
    52.         if( networkView.group == 11 )
    53.         {
    54.             forbidengroup = 12;
    55.         }
    56.         else
    57.         {
    58.             forbidengroup = 11;
    59.         }
    60.        
    61.         foreach (NetworkPlayer player in Network.connections)
    62.         {
    63.             Network.SetReceivingEnabled( player, forbidengroup, false );
    64.         }
    65.     }
    66.    
    67.     void OnDisconnectedFromServer( NetworkDisconnection mode )
    68.     {
    69.         connected = false;
    70.     }
    71.    
    72.     public const string RPC_MOVE = "rpcMove";
    73.     [RPC]
    74.     void rpcMove( int playergroup )
    75.     {
    76.         prefab.transform.Translate( Vector3.right * 2.0f * Time.deltaTime );
    77.     }
    78. }
    79.  
    And my server code
    Code (csharp):
    1. using UnityEngine;
    2. using System.Collections;
    3.  
    4. public class Server : MonoBehaviour {
    5.  
    6.     // Use this for initialization
    7.     void Start () {
    8.         Network.incomingPassword = "secret";
    9.        
    10.         Network.InitializeServer( 64, 25000, false );
    11.     }
    12.    
    13.     // Update is called once per frame
    14.     void Update () {
    15.    
    16.     }
    17.    
    18.     public const string RPC_MOVE = "rpcMove";
    19.     [RPC]
    20.     void rpcMove( int playergroup, NetworkMessageInfo info )
    21.     {
    22.         networkView.group = playergroup;
    23.        
    24.         if( playergroup == 11 )
    25.         {
    26.             Network.SetReceivingEnabled( info.sender, 12, false );
    27.         }
    28.         else
    29.         {
    30.             Network.SetReceivingEnabled( info.sender, 11, false );
    31.         }
    32.        
    33.         networkView.RPC( RPC_MOVE, RPCMode.Others, playergroup );
    34.     }
    35.    
    36.     {
    37.         Debug.Log("Player connected from " + player.ipAddress + ":" + player.port);
    38.     }  
    39.    
    40.    
    41. }
    The idea is : if a client is in group 11, and send the RPC rpcMove, other client in the group 12 doesn't receive the rpc... but in fact all work like I never add group or set SetReceivingEnabled ...

    Any helps ?

    Thanks for any answers!