[Résolu]Appeler un FSM unique depuis d'autres puis retour

Règles du forum
Attention, si vous postez un lien vers un package (en guise d'exemple), assurez-vous qu'il ne contient que des éléments personnels et/ou libres de droit (donc sans l'asset PlayMaker dedans)

Sinon c'est assimilé à du piratage par diffusion sans autorisation de contenus protégés

Les modos auront alors comme consigne de carrément supprimer votre question
Avatar de l’utilisateur
stigma
Messages : 1414
Inscription : 17 Nov 2012 18:29
Localisation : Perdu dans les mondes de Myst
Contact :

[Résolu]Appeler un FSM unique depuis d'autres puis retour

Message par stigma » 16 Sep 2015 09:39

Bonjour,
J'ai essayé de résumer ma question dans le titre, mais je vais développer.
J'ai une scène principale où le joueur peut déplacer des objets. La position de ces objets est sauvegardée à chaque fois que le joueur change d'endroit. Quand il revient, les objets ont enregistré leur nouvelle position.
Je sauvegarde donc à plusieurs endroits mais j'aimerais ne sauvegarder ces positions que dans un seul FSM (pour l'instant le code est redondant). Avoir une sorte de routine unique puis retour. Est-ce possible ?
Merci d'avance Jean ;-)
Dernière édition par stigma le 21 Oct 2015 13:44, édité 5 fois.

Avatar de l’utilisateur
jeanfabre
Messages : 62
Inscription : 12 Nov 2010 13:04
Localisation : France-Russie
Contact :

Re: Appeler un FSM unique depuis d'autres puis retour

Message par jeanfabre » 16 Sep 2015 12:06

Bonjour,

C'est une routine que je fait regulierement moi même. Il y a plusieur moyens:

1: Fsm "A" envoie un Event a ce Fsm "B", et tu utilise ensuite dans Fsm "A" les actions "Get Fsm XXX" pour aller chercher le résultat dans ce fsm "B"

Cette solution marche bon si tu t'attends a ce que FSM "B" traitre les donné instantanément, ou synchrone. SI le processus est asynchrone, alors:

2: Fsm "A" envoie un Event a Fsm "B". "A" sauve la reference au GameObject qui a envoyé cet event, en utilisant l'action "Get Event info", avec la propriété "sent By GameObject", et donc ensuite "B" peut prendre tout sont temps, et envoie un event a "A" lorsque le processus est fini. J'utilise dans ce genre de case un nom d'événement pratique comme "PROCESSUS X" envoyé a "B", et "B" envoie a "A" "PROCESSUS X FINI" Comme ca c'est clair.

3:Dans ton cas, j'appelle ce Fsm qui gere les variables "Meta Data", et par donc Fsm "A" et "B" pourrait s'appeler entre eux, mais "B" va sauver le resultat du processus dans le fsm "Meta Data", et "A" va allez chercher se resultat dans "Meta Data" egalement, même si il a appelé "B" pour ce processus.

4:Pour allez plus loin, ton problème s'apparente plus à la maniére de sauvegarder des infos entre sessions. Pour ca il va te falloir utiliser les PlayerPrefs, et donc chaque Object devrait etre responsable d'aller cherche ca proper position par example. Donc meme pas besoin des techniques expliqué plus haut.


J'espère que c'est assez clair? si jamais je peux faire un exemple simple que je met sur L'Ecosystem.

Bonne journée

Jean

Avatar de l’utilisateur
stigma
Messages : 1414
Inscription : 17 Nov 2012 18:29
Localisation : Perdu dans les mondes de Myst
Contact :

Re: Appeler un FSM unique depuis d'autres puis retour

Message par stigma » 16 Sep 2015 12:57

Merci pour la réponse rapide et pour toutes ces explications. Je vais creuser tout ça.
edit :
Après bien des recherches sur le net, je ne trouve pas d'exemple simple sur le sujet des PlayerPrefs.
J'ai bien compris que le truc est d sauvegarder dans le registre puis récupérer cette valeur. Mais....
J'aurais juste besoin d'un exemple avec un simple cube. Si possible. Merci !

Avatar de l’utilisateur
jeanfabre
Messages : 62
Inscription : 12 Nov 2010 13:04
Localisation : France-Russie
Contact :

Re: Appeler un FSM unique depuis d'autres puis retour

Message par jeanfabre » 17 Sep 2015 07:44

Bonjour,

ok, je vais faire un exemple.

A plus,

Jean

Avatar de l’utilisateur
stigma
Messages : 1414
Inscription : 17 Nov 2012 18:29
Localisation : Perdu dans les mondes de Myst
Contact :

Re: Appeler un FSM unique depuis d'autres puis retour

Message par stigma » 17 Sep 2015 09:17

c'est très sympa :P

Avatar de l’utilisateur
daidokoro
Messages : 192
Inscription : 30 Juin 2014 21:42
Localisation : PAU
Contact :

Re: Appeler un FSM unique depuis d'autres puis retour

Message par daidokoro » 17 Sep 2015 10:01

Bonjour

Mon jeu utilise essentiellement Playmaker et j'utilise cet asset pou les playerprefs, il y a des actions playermaker toutes faites c'est très puissant

http://moodkie.com/easysave/

Bon courage
Studio Animals Quest est Greenlight !

Image

Avatar de l’utilisateur
jeanfabre
Messages : 62
Inscription : 12 Nov 2010 13:04
Localisation : France-Russie
Contact :

Re: Appeler un FSM unique depuis d'autres puis retour

Message par jeanfabre » 17 Sep 2015 13:18

Bonjour,

ok, voila un exemple complet:

PlayerPrefsSample

Image

-- sauvegarde d'un champ text, typiquement pour des formulaire ou simplement le nom d'un joueur
-- sauvegarde automatique de la position d'object interactif. c'est un peu plus compliqué, car par default, les PlayerPrefs ne prennent pas en compte un vector3 ( c'est bizarre, mais c'est comme ca...), donc il existes plusieurs actions pour convertir des valeurs en string comme "convertVector3ToString" et "ConvertStringtoVector3" par exemple, que j'utilise dans ce cas.

a noter le changement de couleur des cube qui indique lorsque la position est sauvegardé.

1: Jouer avec les cubes
2: arrêtez la scene
3: relancer la scene-Y les cubes iront se positionner automatiquement a leur dernière position connu.

de meme pour le champ texte:
1: entrez votre nom
2: arrêtez la scene
3: relancez la scene, votre nom sera la automatiquement

si le contenue est assez simple pour comprendre les mécanismes de base pour charger et sauver des infos dans les PlayerPrefs, je mettrais cet exemple dans L'Ecosysteme.

Bonne journée

Jean

Avatar de l’utilisateur
stigma
Messages : 1414
Inscription : 17 Nov 2012 18:29
Localisation : Perdu dans les mondes de Myst
Contact :

Re: Appeler un FSM unique depuis d'autres puis retour

Message par stigma » 17 Sep 2015 16:24

Merci pour cet exemple qui va me simplifier la vie et ménager mes vieux neurones.
Je vais donc devoir utiliser une rotation en plus (mes caisses et mes bidons peuvent prendre des positions baroques).
Je remarque dans le Save Data Un G pour "Float Conversion". ça signifie quoi ?

Avatar de l’utilisateur
jeanfabre
Messages : 62
Inscription : 12 Nov 2010 13:04
Localisation : France-Russie
Contact :

Re: Appeler un FSM unique depuis d'autres puis retour

Message par jeanfabre » 18 Sep 2015 07:30

Bonjour,

"G" c'est l'option de conversiondes valeurs numériques.

Dans un premier temps, je convertie ces valuer en float et donc j'expose l'option pour avoir un controle totale et ensuite je les injectes dans le format générale par default Vector3(x,y,z).

Bye,

Jean

Avatar de l’utilisateur
stigma
Messages : 1414
Inscription : 17 Nov 2012 18:29
Localisation : Perdu dans les mondes de Myst
Contact :

Re: Appeler un FSM unique depuis d'autres puis retour

Message par stigma » 18 Sep 2015 09:26

J'ai donc testé pour mon projet. C'est révolutionnaire ! ça m'évite d'avoir à gérer des dizaines de variables globales.
Comme je bouge mes objets avec le perso et non la souris, j'ai supprimé des états et ajouté une pause entre Get Position et Sate Data pour éviter le pb des 1000 boucles.
Une question : Comment réinitialiser rapidement la position des objets originales ?
En tout cas tu m'as enlevé une sacrée épine du pied avec ton aide.
Encore merci Jean !

Edit:
En essayant d'ajouter la rotation des objets, ça a merdé et quand je lance la scène, mon objet a disparu. J'ai enlevé mes modifs et pareil. L'objet a du enregistrer des coordonnées erronées.
J'ai utilisé PlayerPrefs.DeleteAll au démarrage de la scène mais ça ne donne rien.

Répondre

Revenir vers « Vos Questions »