Je travailles actuellement sur un lobby customisé où mon joueur peut choisir son pseudo ainsi que sa couleur avant de rejoindre/connecter à un lobby.
Tout d'abord, je me suis inspiré de ce lobby : https://www.assetstore.unity3d.com/en/#!/content/41836
La connexion se déroule en trois étapes :
Le joueur choisit son pseudo et sa couleur,
Ensuite il choisit un lobby
Et rejoint la salle d'attente avec ses paramètres préalablement entrés.
Le soucis, c'est que je veux éviter de passer par un système de sauvegarde grâce au PlayerPrefs.
J'aimerais que tout se fasse "à la voler"
Mais voila, étant donné que le sélection de la couleur ainsi que du pseudo se font sur un écran, et que mon joueur "spawn" dans le lobby automatiquement, je n'arrive pas à lui envoyer des paramètres (nom et couleur) autrement que de passer par le PlayerPrefs.
C'est pourquoi j'aimerais savoir s'il existe une autre solution :
Voici mon code avant refonte, (copier coller de l'asset en grande partie)
Code : Tout sélectionner
//Attached to my Name Panel
public class LobbyName : MonoBehaviour
{
public LobbyManager LobbyManager;
public Text TxtName;
public void OnClickValidName()
{
Constants.PlayerName = TxtName.text;
LobbyManager.ChangeTo(LobbyManager.MenuLobby);
}
}
//Attached to my canvas
public class LobbyManager : NetworkLobbyManager
{
public Button BackButton;
private RectTransform _currentPanel;
public RectTransform ListLobby;
public RectTransform MenuLobby;
public RectTransform NameLobby;
public string PlayerName { get; set; }
private void Start()
{
_currentPanel = NameLobby;
NameLobby.gameObject.SetActive(true);
}
public void ChangeTo(RectTransform newPanel)
{
if (_currentPanel != null)
_currentPanel.gameObject.SetActive(false);
if (newPanel != null)
newPanel.gameObject.SetActive(true);
_currentPanel = newPanel;
}
}
//Attached to my Player Item
public class LobbyPlayer : NetworkLobbyPlayer
{
public Text TxtPlayerName;
public string PlayerName = "";
public override void OnClientEnterLobby()
{
base.OnClientEnterLobby();
TxtPlayerName.text = Constants.PlayerName;
LobbyPlayerList.Instance.AddPlayer(this);
}
}
//Attached to my Menu lobby panel
public class LobbyMenu : MonoBehaviour
{
public LobbyManager LobbyManager;
public void OnClickConnect()
{
LobbyManager.StartClient();
LobbyManager.ChangeTo(LobbyManager.ListLobby);
}
}