2017-01-06 15 views
0

ich auf meinem Netzwerk Lobby meines 2D-Spiel arbeiten, und ich habe ein kleines Problem mit dem Namen meines Spieler:Unity Networking Lobby: Set Spielernamen

ich this example heruntergeladen, mir zu helfen

Aber wie Sie Sie können sehen, dass der Name des Spielers geändert werden kann, wenn Sie dem Spiel beitreten und Sie in der Lobby betreten haben.

Aber in meinem Projekt möchte ich meinen Namen schreiben, klicken Sie auf Gültig und verbinden Sie sich mit der Lobby. Wie folgt aus:

enter image description here

Mein Problem ist, ich weiß nicht, wie kann ich meinen Text als Inputfield Namen für meine Spieler in meiner Lobby nutzen.

Ich versuche, den Namen in einer statischen Klasse mit statischer Eigenschaft zu speichern, aber jeder Spieler hat den gleichen Namen.

Dies ist mein Code:

//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); 
    } 
} 

ich meine statische Klasse weiß nicht, zu arbeiten, weil ich nur eine Instanz haben.

(Im Asset Beispiel kann der player in dem Lobby-Panel geändert werden, aber ich will nicht die gleiche Konfiguration)

Können Sie mir helfen?

Dank

Antwort

0

Werfen Sie einen Blick auf NetworkIdentity -localPlayerAuthority.

+0

Hey Sajmoon, danke für deine Antwort. Ich habe meine Antwort mit PlayerPrefs gelöst. Ich weiß, es ist keine gute Lösung, aber mein Spieler hat schon denselben Namen, gleich, wenn er geht. Kannst du mir ein Beispiel mit dem Namen property plz mitteilen? – Naografix

Verwandte Themen