Je travaille actuellement sur un projet dans Unity où je mets en place un système de formulaire pour que les joueurs puissent entrer des réponses textuelles. Cependant, je rencontre un problème lors de la comparaison des réponses entrées par les joueurs avec les réponses possibles dans mon jeu.
J'utilise TextMeshProUGUI pour capturer les réponses du joueur, et le texte est stocké dans un objet instance(clone). Je récupère le texte entré par le joueur à l'aide du code suivant :
Code : Tout sélectionner
public void CreateValidate_instance()
{
for (int i = 0; i < currentMessageGroup.validation.Length; i++)
{
GameObject GOvalidations_i = Instantiate(GOvalidations, ReponceContent);
GOvalidations_i.transform.SetSiblingIndex(0);
// renplissage des textes
ValBoxElement valBoxElement = GOvalidations_i.GetComponent<ValBoxElement>();
valBoxElement.presText = currentMessageGroup.validation[i].PresText;
// je recherche le bouton de validation et lui ajoute une fonction sur bouton
Button buttonVal = GOvalidations_i.transform.Find("Validationmel").GetComponent<Button>();
int index = i;
buttonVal.onClick.AddListener(() => SetNextGroupVal(index));
}
}
Code : Tout sélectionner
public void SetNextGroupVal(int indexVal)
{
// Récupérez le texte de la réponse du joueur depuis le formulaire de linstance creer juste avant
GameObject TextJoueur = GameObject.Find("TextJ");
Debug.Log("TextJ " + TextJoueur);
string reponseJoueur = TextJoueur.GetComponent<TextMeshProUGUI>().text;
Debug.Log("la réponse du joueur : "+reponseJoueur);
Debug.Log("Longueur du texte de réponse du joueur : " + reponseJoueur.Length);
if (currentMessageGroup != null && indexVal >= 0 && indexVal < currentMessageGroup.validation.Length)
{
bool reponseCorrecte = false;
for (int j = 0; j < currentMessageGroup.validation[indexVal].BonneProposition.Length; j++)
{
string bonneProposition = currentMessageGroup.validation[indexVal].BonneProposition[j];
if (reponseJoueur == bonneProposition)
{
reponseCorrecte = true;
break;
}
}
if (reponseCorrecte)
{
// Réponse correcte, affichez un message de succès
GameObject newAnswerContent = Instantiate(answerContentPrefab, messagesContent);
newAnswerContent.transform.SetSiblingIndex(0);
newAnswerContent.GetComponentInChildren<Text>().text = currentMessageGroup.validation[indexVal].reponce;
currentMessageGroup = currentMessageGroup.validation[indexVal].nextGroupVal;
GOvalidations.gameObject.SetActive(false);
StartCoroutine(SendingMessages());
}
else
{
// Réponse incorrecte, affiche un des message d'échec
// Ici, vous pouvez gérer la réponse incorrecte comme vous le souhaitez
Debug.Log("Réponse incorrecte.");
}
}
else
{
Debug.LogError("IndexVal hors des limites du tableau : " + indexVal);
}
}
e problème survient lorsque j'essaie de comparer reponseJoueur avec les réponses possibles dans mon jeu. J'ai mis en place une boucle pour parcourir les réponses possibles, mais la comparaison ne fonctionne pas comme prévu. J'obtiens souvent une réponse incorrecte, même lorsque le texte entré par le joueur correspond à l'une des réponses possibles.
mon Debug.Log de la string reponseJoueur et toujours vide.
Y a-t-il quelque chose que je rate dans le button de validation? Peut-être que cela a quelque chose a faire avec onEndEdit.AddListener qui semble plus approprier ?Je tourne en rond et peut etre qu'un regard exterieur pouras m'aider a y voir plus claire
Si quelqu'un a déjà rencontré un problème similaire ou a des conseils pour résoudre cette situation, je serais reconnaissant pour toute aide que vous pourriez fournir.
Merci d'avance pour votre assistance.
Cordialement,
1300vrtical