Display positions of the player’s names NETWORK

Greetings!

I have some problems with displaying player’s name from the clients side. Ive been trying to deal with it for 3 days — still no result.

Thats my code:

Vector3 screenPosition, cameraRelative;

	void OnGUI()
	{   	
		networkView.RPC("Show", RPCMode.AllBuffered, this.networkView.viewID); 

		if (cameraRelative.z > 0)
		{
			Rect position = new Rect(screenPosition.x, (Screen.height - screenPosition.y) * 0.75f, 100f, 20f);
			GUI.Label(position, "Avatarchik");
		}

	}

	[RPC]
	void Show(NetworkViewID v, NetworkMessageInfo i)
	{	
		NetworkView view = NetworkView.Find(v);

		if(view.owner != i.sender) // if(!view.isMine)
		{
			screenPosition = transform.Find("Camera").GetComponent<Camera>().WorldToScreenPoint(view.transform.position);
			cameraRelative = transform.Find("Camera").GetComponent<Camera>().transform.InverseTransformPoint(view.transform.position);
	    }
	}

…yet each person sees own name at own position. Please help me!

Sorry for my bad Eng

Something like this should work, haven’t tested:

 void OnGUI ()
{
if(!networkView.isMine)
{
Vector3 screenPos = Camera.main.WorldToScreenPoint(transform.position);
screenPos.y = Screen.height - screenPos.y;
Rect position = new Rect(screenPos.x, screenPos.y, 100f, 20f);
			
GUI.Label(position, PlayerName);
}
}

EDIT:

Send player name to all players:

void OnNetworkInstantiate(NetworkMessageInfo info) {
if(networkView.IsMine)
networkView.RPC("SendName", RPCMode.OthersBuffered, playername); 
}

[RPC]
void SendName(String new_name)
{
playername = new_name;
}

Thats it! The solution is turning player’s camera to Main camera :slight_smile: Sorry for my stupid head!