public class MMONetworkManager : NetworkManager
public override void OnStartServer()
NetworkServer.RegisterHandler<CreateMMOCharacterMessage>(OnCreateCharacter);
public override void OnClientConnect()
// you can send the message here, or wherever else you want
CreateMMOCharacterMessage characterMessage = new CreateMMOCharacterMessage
NetworkClient.Send(characterMessage);
void OnCreateCharacter(NetworkConnectionToClient conn, CreateMMOCharacterMessage message)
// playerPrefab is the one assigned in the inspector in Network
// Manager but you can use different prefabs per race for example
GameObject gameobject = Instantiate(playerPrefab);
// Apply data from the message however appropriate for your game
// Typically Player would be a component you write with syncvars or properties
Player player = gameobject.GetComponent();
player.hairColor = message.hairColor;
player.eyeColor = message.eyeColor;
player.name = message.name;
player.race = message.race;
// call this to use this gameobject as the primary controller
NetworkServer.AddPlayerForConnection(conn, gameobject);