Hi,
For my game, I would like to allow each connected user to choose its own player prefab. I found a code snippet here: How to set individual playerPrefab form client in the NetworkManger? - Unity Engine - Unity Discussions which override the OnServerAddPlayer(…,…,MESSAGE) method.
public override void OnServerAddPlayer(NetworkConnection conn, short playerControllerId,NetworkReader extraMessageReader)
{
string prefabChoice = "";
if (extraMessageReader != null)
{
prefabChoice = extraMessageReader.ReadString();
}
if (prefabChoice == "prefabA")
{
foreach (var prefab in spawnPrefabs)
if (prefab.tag == "prefabA")
{
playerPrefab = prefab;
break;
}
}
else if (prefabChoice == "prefabB")
{
foreach (var prefab in spawnPrefabs)
if (prefab.tag == "prefabB")
{
playerPrefab = prefab;
break;
}
}
else
{
foreach (var prefab in spawnPrefabs)
if (prefab.tag == "prefabOther")
{
playerPrefab = prefab;
break;
}
}
var player = Instantiate(playerPrefab);
NetworkServer.AddPlayerForConnection(conn, player, playerControllerId);
DebugConsole.LogWarning("User added on server(" + prefabChoice + "):" + player.tag);
}
And I also override the OnClientConnect:
public override void OnClientConnect(NetworkConnection conn)
{
DebugConsole.LogWarning("User added on client:" + playerPrefab.tag);
Message msg = new Message() { Data = "prefabA" };
ClientScene.AddPlayer(conn,0,msg);
}
But the method OnServerAddPlayer(…,…,MESSAGE) is never called!!
Thanks!