J'ai un petit problème qui me titille depuis plusieurs jours et que je n'arrive pas à régler.
Je fais appel à la communauté pour essayer de trouver une solution.
Je créer un jeu multiplayer de lettres dans lequel la même grille doit s'afficher pour chaque player.
Tout va bien sauf que chaque player a une grille différente.
voila le script
Code : Tout sélectionner
using UnityEngine;
using UnityEngine.Networking;
public class Player : NetworkBehaviour
{
int size;
int count;
string DataL = "AAAAAAAAAABBCCDDDEEEEEEEEEEEEEEEFFGGGHHIIIIIIIIIJKLLLLLMMMNNNNNNOOOOOOPPQRRRRRRSSSSSSTTTTTTUUUUUUVVWXYZ";
//La variable de synchronisation crée par la commande CmdGrille
//et qui appelle Initialise chez les clients
[SyncVar(hook = "Initialise")]
string grille;
//Appel de synchonisation de la variable grille
//qui doit permettre de créer la même grille chez tous les players
void Initialise(string _grille)
{
grille = _grille;
print(grille);
//C'est ici que j'afficherai ma grille
}
//Commande Cmdgrille sensée ne s'exécuter que chez le server
//pour créer un string qui représentera les lettres de la grille
[Command]
void CmdGrille()
{
size = 5;
int count = size * size;
string g = "";
for (int i = 0; i < count; i++)
{
int v = UnityEngine.Random.Range(0, DataL.Length);
g += DataL[v];
}
grille = g;
}
private void Update()
{
//On attend la pression d'espace
if (Input.GetKeyDown(KeyCode.Space))
{
//si c'est le server
if (isServer)
{
//execute la commande CmdGrille
CmdGrille();
}
}
}
}
Y aura-t-il quelqu'un qui pourra me dire ce que je n'ai pas compris