[MY-AL] UnityEvent et Delegate pour un jeu de carte à collectionner

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
bisonfoutu
Messages : 27
Inscription : 22 Juil 2015 15:44

[MY-AL] UnityEvent et Delegate pour un jeu de carte à collectionner

Message par bisonfoutu » 29 Juil 2017 09:17

Bonjour,

Je suis actuellement en train de travailler sur un prototype de jeu de carte à collectionner (Hearthstone, Magic...). J'ai pour l'instant programmé un éditeur de carte avec EditorWindow qui me permet de sauvegarder les cartes dans un ScriptableObject ainsi qu'un système de combat basique.
Après diverses avis que j'ai pu trouver sur des forums, j'ai vu qu'il était conseillé de faire un système de Delegates qui gèrerais les effets de toutes les cartes du jeu ainsi qu'un système d’événement pour gérer tous les événements récurrent du jeu (Quand on pose une carte, quand une carte meurt, au début du tour...). Seulement je n'avais jamais utilisé UnityEvent jusque la et n'ai donc aucune idée de la manière de mettre en place ce système malgré les nombreuses recherches que j'ai pu effectuer.

Voila les questions que je me pose :
Comment définir un nouvel événement, tel que "lorsqu'une invocation attaque" ou encore "Au début du tour de l'adversaire".
Comment stocker les effets de chaque carte de manière à ne pas devoir créer un script différents pour chaque carte?
De manière très général, comment penser l'architecture du programme?

j'ai trouvé ce lien : qui m'a permis de mieux cerner le sujet mais les bouts de codes qui s'y trouvent sont incomplet et ne me permettent pas de comprendre réellement le système qui est mis en place
https://forum.unity3d.com/threads/how-w ... me.403611/

J'ai conscience que ma question est très vague et bien entendu je n'attend pas une réponse clef en main mais simplement des pistes ou une explication des fonctionnalités que je n'arrive pas pour le moment à comprendre.

Merci de m'aider sur le sujet !

Avatar de l’utilisateur
Greg
Messages : 156
Inscription : 08 Mai 2017 15:22

Re: [MY-AL] UnityEvent et Delegate pour un jeu de carte à collectionner

Message par Greg » 14 Août 2017 20:28

Bonjour,

je pense que si personne ne répond, c'est parce que oui la question est très vague...
En gros, elle revient un peu à : comment faire un système de jeu?

Et bien il y a de nombreuses façons et méthodes de faire et cela dépend de nombreux facteurs (pas que le type de jeu)

Bref, la soupe dépend du cuisinier mais par exemple pour faire simple mais pas optimisé :
using UnityEngine;

public class GameManager : MonoBehaviour
{
#region Attributes
public string turnPhase;
public bool spellActive, curseActive, invokeMonster;
#endregion

#region Unity Methods
void Update()
{
if(spellActive)
{
// Do stuff.
}

switch (turnPhase)
{
case "Starting Phase":
// Do stuff.
turnPhase = "Player Phase";
break;
case "Player Phase":
// Do stuff.

if(invokeMonster)
{
// Do stuff.
}

break;
case "Ennemi Phase":
// Do stuff.

if (invokeMonster)
{
// Do stuff.
}
break;
case "Ending Phase":
// Do stuff.
break;
}

if (curseActive)
{
// Do stuff.
}
}
#endregion
}

et pour les cartes :
using UnityEngine;

public class SpellsManager : MonoBehaviour
{
public void CardSpells(string spellType, string spellElement, int puissance)
{
if (spellType == "Magic")
{
switch (spellElement)
{
case "Earth":
switch (puissance)
{
case 1:
// Do stuff.
break;
case 2:
// Do stuff.
break;
case 3:
// Do stuff.
break;
}
break;
case "Wind":
// Do stuff.
break;
case "Fire":
// Do stuff.
break;
}
}
else
{
// Do stuff.
}
}
}
:merci:
Mon jeu de développement cellulaire : MICROBIOME (encore quelques bugs...)
(merci bien à ceux qui passent mettre des étoiles ! ^^)

Répondre

Revenir vers « (C#) CSharp »