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