PhotonPlayer display other players name
Options
Hi, how can I display other player's name? I have 4 players in room. I have already displayed name of local player and 1 other player. I have no idea how to display other 2 player's name.
PhotonPlayer remote2 = PhotonNetwork.player.GetNext();
if(remote2 != null)
{
this.playerNames[2].text = remote2.NickName +" ";
}
But all other texts displayer only 1 other players name.
Thank you
private void UpdatePlayerTexts() { PhotonPlayer remote = PhotonNetwork.player.GetNext(); PhotonPlayer local = PhotonNetwork.player; if (remote != null) { this.playerNames[1].text = remote.NickName + " "; } else { //TimerFillImage.anchorMax = new Vector2(0f,1f); //this.TimeText.text = ""; //this.playerNames[1].text = "waiting for another player 00"; } if (local != null) { // should be this format: "YOU 00" //this.playerNames[0].text = "YOU " + local.GetScore().ToString("D2"); this.playerNames[0].text = "YOU"; } }I have tried to add
PhotonPlayer remote2 = PhotonNetwork.player.GetNext();
if(remote2 != null)
{
this.playerNames[2].text = remote2.NickName +" ";
}
But all other texts displayer only 1 other players name.
Thank you
0
Answers
-
Hi @NomadicWarrior,
you can set the player's nick name by usingPhotonNetwork.player.NickName = "NickName";
. This way the name gets automatically synchronized across the network, too. In order to access a player's nick name you can use the same call:string nickName = PhotonNetwork.player.NickName;
.
If you want to access the nick name from an object instantiated by the player, you can use the object's PhotonView component to get the name:string nickName = GetComponent<PhotonView>().owner.NickName;
.
If you want to have a list with all player names, you can iterate through the PlayerList for example with a for-each loop like shown below:foreach (PhotonPlayer p in PhotonNetwork.playerList) { string nickName = p.NickName; }
Please note, that the PlayerList is only available, when the client is inside a room.1 -
hi @Christian_Simon , thank you for answer
I have 4 players in room and 4 text ui
I have to set each players name to their uniq text. As RockPaperScissors. I don't need list of players.
if is local set my name to Text[0].text = local player's name;
Text[1].text = remote1 players's name;
Text[2].text = remote2 player's name;
Text[3].text = remote3 players name;0 -
Anyone please, I still can't see other players name
public string[] playerMass = new string[4]; public string pName1; public string pName2; public string pName3; public string pName4; public string _yourName; pName1 = playerMass [0]; pName2 = playerMass [1]; pName3 = playerMass [2]; pName4 = playerMass [3]; _yourName = PhotonNetwork.playerName; //PhotonPlayer _players = PhotonNetwork.player.GetNext (); //playerMass [PhotonNetwork.playerList.Length] = PhotonNetwork.player.NickName; foreach (PhotonPlayer p in PhotonNetwork.playerList) { playerMass [PhotonNetwork.playerList.Length] = p.NickName; }
0 -
hi @Christian_Simon , thank you for answer
I have total 4 players in room. And I have 4 UI Text gameobject.
Text 1 - is mine (local) "You"
Text2, Text3, Text4 - for other players;
Example:
Text1 = You
Text2 = NomadicWarrior
Text3 = Christian_Simon
Text4 = Bob.0 -
IF you want to set data in a lobby correct way to do this is
public override void OnJoinedRoom()
{
photonView.RPC("SetLobbyPlayersData",PhotonTargets.all);
}
[PunRPC]
public void SetLobbyPlayersData()
{
for (int index = 0; index < PhotonNetwork.playerList.Length; index++)
{
text_playerNames[index].text = "";
}
int i = 0;
for (int index = 0; index < PhotonNetwork.playerList.Length; index++)
{
try
{
text_playerNames[index].text = PhotonPlayer.Find(i + 1).NickName;
playersInfo[index].SetActive(true);
}
catch (Exception e)
{
index--;
}
i++;
}
}
This way even if anyone leaves lobby and somone else joins later it will be handled0 -
I attached the following script on the input field:
public class NameFestlegen : Photon.MonoBehaviour { public static string Name; private GameObject Dings; public void Run() { print(PhotonNetwork.player.NickName); Name = gameObject.GetComponent<InputField>().text; PhotonNetwork.player.NickName = Name; print(PhotonNetwork.player.NickName); } }
And this script on the players avatar:public class ShowInfoOfPlayer : Photon.MonoBehaviour { private GameObject textGo; private TextMesh tm; public bool DisableOnOwnObjects; void Start() { if (tm == null) //wenn textmesh { textGo = gameObject.GetComponentInChildren<TextMesh>().gameObject; tm = textGo.GetComponent<TextMesh>(); } } void Update() { bool showInfo = !this.DisableOnOwnObjects || this.photonView.isMine; if (textGo != null) { textGo.SetActive(showInfo); } if (!showInfo) { return; } PhotonPlayer owner = this.photonView.owner; if (owner != null) { tm.text = (string.IsNullOrEmpty(owner.NickName)) ? "player" + owner.ID : owner.NickName; } else if (this.photonView.isSceneView) { tm.text = "scn"; } else { tm.text = "n/a"; } }
It works find but I only tried it with two players. Maybe it works with more players too.0 -
with this bad boi's just have to put these underneath so they are set after thet have been assigned=D pName1 = playerMass [0]; pName2 = playerMass [1]; pName3 = playerMass [2]; pName4 = playerMass [3];
0