[DB-RS] Syncro du pseudo

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
brennius27
Messages : 11
Inscription : 21 Jan 2015 21:19

[DB-RS] Syncro du pseudo

Message par brennius27 » 14 Août 2016 12:06

Bonjour,

Je galère depuis deux jour a faire marcher mon script pour synchroniser le pseudo du joueur qu'on entre dans une autre scène, celle du main menu.

Code : Tout sélectionner

using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
using UnityEngine.UI;
using System.Collections.Generic;

public class LocalPlayer : NetworkBehaviour {
	public bool isAtStartup = true;

	public GameObject Landscape;
	public GameObject MainCamera;
	public GameObject playerName;
	public GameObject netsyncer;
	public GameObject Mycamera;
	[SyncVar]
	public string pname; // La variable a syncroniser
	// Use this for initialization
	void Start () {

		if (GetComponent<NetworkView> ().isMine) {
			netsyncer = GameObject.Find ("NetworkSyncer1"); // NetworkSyncer1 est l'objet indestructible qui contient le pseudo
			if (Network.isClient){
				SetPlayerName();}
			else{
			pname = netsyncer.GetComponent<NetworkSync> ().myPseudo;
			}
			GetComponent<PlayerController> ().enabled = true;
			Landscape.SetActive (true);
			MainCamera.SetActive (true);
			playerName.GetComponent<MeshRenderer> ().enabled = false;
		} else 
		{
			Mycamera = GameObject.Find("Main Camera");

		}
	}
	
	// Update is called once per frame
	void Update () {

		if (GetComponent<NetworkView> ().isMine == false) { //Aligne le 3Dtext avec la caméra de son joueur
			playerName.transform.rotation = Mycamera.transform.rotation;
		}
		playerName.GetComponent<TextMesh> ().text = pname;
		print (pname); //Affiche le pseudo du serveur dans la console mais pour le client pname = null, et inversement.
	}
	
	[Client]
	void SetPlayerName(){
		pname = netsyncer.GetComponent<NetworkSync> ().myPseudo;
		CmdSendNameToServer(pname,gameObject);
	}
	[Command]
	void CmdSendNameToServer(string nameToSend,GameObject gameObjectToChange)
	{
		gameObjectToChange.transform.FindChild ("Player_name").GetComponent<TextMesh> ().text = nameToSend;
	}
}

Merci de m'aider, ce serait vraiment sympa.
Bonne journée

Répondre

Revenir vers « (C#) CSharp »