[RESOLU][DB-RS] Changer le Material d'un objet en réseau

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
Avatar de l’utilisateur
Scozor
Messages : 46
Inscription : 17 Oct 2014 12:56
Contact :

[RESOLU][DB-RS] Changer le Material d'un objet en réseau

Message par Scozor » 06 Juin 2018 18:09

Bonsoir,

Je coince sur un problème concernant la modification du 'SkinnedMeshRenderer.material' du joueur en réseau. Pour faire court, dans le MAIN MENU de mon jeu, le joueur a la possibilité de changer son skin grâce à un tableau de type 'Material'.
Material[] skins;
Tout fonctionne parfaitement, le joueur peut choisir son skin en appuyant sur une touche. Ensuite je stocke le skin sélectionné par le joueur dans une class 'DataGame' sur la propriété 'Material skinJoueur'. Je fais une sérialisation et j'enregistre dans dans le registre de windows mes données.

Maintenant, je souhaite faire en sorte que lorsqu''un joueur se connecte à un serveur, il lui envoie son Material (skin), ainsi le serveur l'applique à son Prefab pour tout le monde.

Le souci c'est que je n'arrive pas à concevoir un script pour permettre ce genre de chose, j'ai essayé lorsque le joueur est instancié de faire appel à une fonction avec en paramètre le Material qui sera lu par le serveur, mais ce n'est pas possible. (Uniquement des types primitif)

J'ai également des difficultés concernant les joueurs qui rejoignent en cours la partie, comment mettre à jour les skins de tout le monde pour ces clients ?

En vous remerciant d'avoir pris la peine de lire mon pavé.

EDIT : Ou alors est-ce que je crée plusieurs Prefabs de mon joueur avec les différents materials ? Qu'ensuite j'instancie sur le serveur selon le skin choisit par le joueur au main menu.
Dernière édition par Scozor le 07 Juin 2018 23:08, édité 1 fois.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: [DB-RS] Changer le Material d'un objet en réseau

Message par Alesk » 07 Juin 2018 11:17

Il faut que tu créés un tableau avec tous tes matériaux, identique sur tous les clients et le serveur.
Lorsque tu fais la sélection de ta skin, tu n'as besoin de connaitre que l'index dans ton tableau de matériaux.

C'est cet index (donc un int) que tu devras envoyer à tous tes clients pour afficher la même skin partout.

Avatar de l’utilisateur
Scozor
Messages : 46
Inscription : 17 Oct 2014 12:56
Contact :

Re: [DB-RS] Changer le Material d'un objet en réseau

Message par Scozor » 07 Juin 2018 14:06

Salut, je te remercie pour ta réponse.

J'avais déjà eu un peu cette idée, mais le problème c'est que lorsqu'un joueur rejoint la partie en cours, pour qu'il soit à jour concernant les autres joueurs sur leurs skins je ne devrais pas faire un [SyncVar] ?

Au pire des cas je vais essayer, encore une fois merci.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: [DB-RS] Changer le Material d'un objet en réseau

Message par Alesk » 07 Juin 2018 16:59

Oui, il faut bien entendu synchroniser l'index du skin utilisé par chaque joueur sur tous les clients.


Répondre

Revenir vers « (C#) CSharp »