Skip to content
bobsayshilol edited this page Feb 19, 2014 · 19 revisions

If possible try not to adjust any parts of the main 3 networking scripts

How it works:

There is a gameObject in the level with 2 scripts on it: one called networkManager and another called networkVariables. networkManager starts everything off. When it loads you can either pick to host or join a game. When you pick, it will load up networkManagerServer or `networkManagerClient and stop itself. Both of these then load any scripts which need networking information (for example which buggy is yours).

In networkVariables you can set certain objects (for example a camera) as variables that can then be passed on to and other networked scripts that need them. You should only add variables to networkVariables and not functions (so any gameObjects, the current build version, etc...).

In both networkManagerServer and networkManagerClient there's a section where you can add custom scripts to be loaded. Both of these scripts are attached to the same gameObject networkManager and networkVariables are running on and will load the scripts onto this gameObject aswell.

Basic example - camera following script:

In networkVariables you need to create a reference to a camera that will be used by the script that follows your buggy. To do this you add this line of code to the top:

public GameObject myCamera;

and then in the inspector in Unity you can point it to the camera you want to.

In your script you will probably have that same line at the top already. To set the reference you need to add this to the 'Start' function:

// get variables we need networkVariables nvs = GetComponent("networkVariables") as networkVariables; camera = nvs.myCamera;

This finds the script that has the variables on and sets our variable camera to the one we specified in networkVariables. You can add as many variables as you want to networkVariables, but make sure that it doesn't interfere with someone else's script.

Now in networkManagerClient you need to add the script so that it gets loaded. Do this by finding the line:

// CLIENT SIDE SCRIPTS GO HERE

and adding

gameObject.AddComponent("myScriptName");

This will now load up myScriptName when you choose to join a game (ie play as a client). The way to do it for the networkManagerServer script is almost identical, but make sure you do it for both if you want the host to have a moving camera!

To disconnect you simply call 'Network.Disconnect()' and the server will clean up anything you owned from everyone else.