Unity Mirror. Клиент и сервер
Делаю мультиплеерную игру - настольный теннис для двоих. В качестве игроков два разных префаба, которые должны спавнится в зависимости от того, есть ли уже игрок на сервере. Если никого нет, то ты игрок 1, если кто-то есть, значит ты игрок 2. Пока что мой свитчер работает лишь на стороне клиента из-за чего при первом подключении друг к другу игроки спавнятся с одинаковым префабом, если кто-то перезайдет, то свитчер переключает на другой префаб. Как вы понимаете, это плохое решение. Сам скрипт:
using Mirror;
using UnityEngine;
public class NetMan : NetworkManager
{
public struct PlayerJoinMessage : NetworkMessage
{
public string name;
}
public GameObject PlayerPrefab1, PlayerPrefab2;
PlayerJoinMessage Message = new PlayerJoinMessage { name = "Player 2" };
public override void OnStartServer()
{
base.OnStartServer();
NetworkServer.RegisterHandler<PlayerJoinMessage>(OnPlayerJoin);
}
public override void OnClientConnect()
{
if (Message.name != "Player 1")
{
Message.name = "Player 1";
}
else if (Message.name != "Player 2")
{
Message.name = "Player 2";
}
NetworkClient.Send(Message);
}
private void OnPlayerJoin(NetworkConnectionToClient conn, PlayerJoinMessage message)
{
if (message.name.Equals("Player 1"))
{
GameObject gameObject = Instantiate(PlayerPrefab1);
player1behaviour player = gameObject.GetComponent<player1behaviour>();
NetworkServer.AddPlayerForConnection(conn, gameObject);
}
else if (message.name.Equals("Player 2"))
{
GameObject gameObject = Instantiate(PlayerPrefab2);
player2behaviour player = gameObject.GetComponent<player2behaviour>();
NetworkServer.AddPlayerForConnection(conn, gameObject);
}
}
}