Page 1 sur 1

Tout nouvel utilisateur

Publié : 09 Août 2019 14:04
par bloodfang
Bonjour à tous,

Voilà je fais un rapide topo, j'aimerai créer un mini jeu sur android pour ma bien aimé. Mais le soucis c'est que je part de zero alors je suis en train de taffer unity depuis quelques jours j'arrive à faire un jeu plus ou moins comme je veux pour le moment. C'est à dire un jeu très très basique un personnage qui avance tout seul, on tape sur l'écran pour sauter, des ennemies, des trous des plateformes et un game over, bref le strict minimum et ca me va plutot bien.

Bon jusqu'ici tout va plutot bien, seulement j'aimerai bien y amener une trame scénaristique et donc faire une cinématique de dialogue au début et à la fin.

J'ai regardé des dizaine de tuto sur internet tous plus ou moins long seulement une perte de temps énorme rien ne fonctionne. Soit mon script ne trouve pas l'autre script, soit c'est bourré d'erreur ect... Bref c'est pas la joie à ce niveau là.
Donc j'aimerai entrer en contact avec des utilisateurs chevronné pour qui ce type de travail pour eux je pense est un jeu d'enfant afin de regler mes soucis et répondre à mes questions.

Je vous remercie pour vos futurs réponse :)

Re: Tout nouvel utilisateur

Publié : 09 Août 2019 14:22
par Max
Bonjour,
bloodfang a écrit :
09 Août 2019 14:04
Soit mon script ne trouve pas l'autre script, soit c'est bourré d'erreur ect... Bref c'est pas la joie à ce niveau là.
Donc j'aimerai entrer en contact avec des utilisateurs chevronné pour qui ce type de travail pour eux je pense est un jeu d'enfant afin de regler mes soucis et répondre à mes questions.
Pour ce qui est des personnes chevronnées, ici ça devrait pouvoir le faire je pense.
Pour les soucis de scripts auquel tu sembles confronté, le mieux est de détailler (techniquement parlant) les problèmes que tu rencontres, et surtout poster ici tes scripts, pour aider c'est mieux (en utilisant les bonnes balises) .

Re: Tout nouvel utilisateur

Publié : 09 Août 2019 17:22
par bloodfang
Ouais enfin je cherchais surtout quelqu'un de dispo pour discuter en messagerie instant, parce que si je doit poster un topic ici à chaque fois que j'ai un soucis ou une question, ca va être compliqué.

Mais je peux déjà le plus gros:
J'ai suivis un tuto de microsoft qui est dispo en PDF sur google.
J'ai tout fait comme indiqué seulement ca ne se lance pas mais pour une fois il n'y a qu'un seul message d'erreur qui est celui là:
NulleReferenceException: Object reference not set to an instance of an object Dialogue.parler(System.String choix, System.String texte) (at Assets/scipts/dialogue.cs:34)
Quand je double clique sur le message d'erreur ca me renvois à cette ligne:

Code : Tout sélectionner

 Joueur_text.GetComponent<Text>().text = texte;
Et voici le script tout entier au cas où ca puisse aider:

Code : Tout sélectionner

using System.Collections;
using UnityEngine;
using UnityEngine.UI;


public class Dialogue : MonoBehaviour
{
    public GameObject Joueur_image;
    public GameObject Joueur_text;
    public GameObject Dany_image;
    public GameObject Dany_text;


    // Start is called before the first frame update
    void Start()
    {
        this.gameObject.GetComponent<Image>().enabled = false;
        parler("joueur", "J'écris un texte car je le vaux bien.");
        StartCoroutine(dialogue1());

    }
    public void parler(string choix, string texte)
    {
        Joueur_text.SetActive(false);
        Joueur_image.SetActive(false);
        Dany_text.SetActive(false);
        Dany_image.SetActive(false);


        this.gameObject.GetComponent<Image> ().enabled = true;

        if (choix == "joueur")
        {
            Joueur_text.GetComponent<Text>().text = texte;
            Joueur_text.SetActive(true);
            Joueur_image.SetActive(true);
        }
        if (choix == "Dany")
        {
            Dany_text.GetComponent<Text> ().text = texte;
            Dany_text.SetActive(true);
            Dany_image.SetActive(true);
        }
    }

 

    IEnumerator dialogue1()
    {
        yield return new WaitForSeconds(3);

        parler("Dany", "Oui tu le vaux bien.");
        StartCoroutine(dialogue2());
    }
    IEnumerator dialogue2()
    {
        yield return new WaitForSeconds(3);
        parler("joueur", "Oui mais ca commence à me gaver.");
        StartCoroutine(desactiver_tout());

    }
    IEnumerator desactiver_tout ()
    {
        yield return new WaitForSeconds(3);

        this.gameObject.GetComponent<Image>().enabled = false;
        Joueur_text.SetActive(false);
        Joueur_image.SetActive(false);
        Dany_text.SetActive(false);
        Dany_image.SetActive(false);

    }
    
}
Voilà ca n'a pas l'air bien méchant car rien n'est rouge dans l'éditeur je suis sur que c'est un petit truc mais ca me rend fou! :-D

Re: Tout nouvel utilisateur

Publié : 09 Août 2019 17:39
par Max
Re,

Tu sembles avoir une référence nulle. Ce qui veut dire que l'un des éléments que tu emplois sur cette ligne est sans valeur (donc Null).
Soit Joueur_text est null (non renseigné dans l'inspector du gameobject sur lequel est placé le script), soit le gameobject Joueur_text ne possède pas de composant UI.Text auquel tu cherches à accéder par le biais du GetComponent<>.

PS: je déplace le sujet dans la section Scripting->CSharp

Re: Tout nouvel utilisateur

Publié : 10 Août 2019 09:44
par Moi 1971
Bonjour, pour déboguer facilement il y a Debug.log("Le message").
Tu pourrais l'utiliser comme cela dans la fonction parler() :

Code : Tout sélectionner

public void parler(string choix, string texte)
    {
       Debug.Log("choix: " + choix);
       Debug.Log("string: " + texte);
       
        Joueur_text.SetActive(false);
        Joueur_image.SetActive(false);
        Dany_text.SetActive(false);
        Dany_image.SetActive(false);
        ....
        ...
        .

     }
En suite, peut-être faut-il activer "Joueur_text" et "Dany_text" avec "SetActive" avant de les renseigner avec le contenu de "texte".
Au lieu de :

Code : Tout sélectionner

Joueur_text.GetComponent<Text>().text = texte;
Joueur_text.SetActive(true);
Faire :

Code : Tout sélectionner

Joueur_text.SetActive(true);
Joueur_text.GetComponent<Text>().text = texte;

Re: Tout nouvel utilisateur

Publié : 10 Août 2019 15:39
par bloodfang
Non mais le soucis était tout béte en fait j'ai utilisé textmesh pro, et fallais juste mettre la commande de texte mesh à la place du text.

Merci tout cas pour votre aide un probléme en amène un autre avec unity j'ai l'impression...

Voilà j'ai reussis à faire plus ou moins ce que je voulais au niveau des dialogue ect.. le soucis viens au niveau du gameplay.
En fait mon peso avance tout seul et saute quand on lui demande(jusque là c'est bon). Seulement il avance sur une seule ligne. Quand j'essaye de faire une montée avec une plateforme mon perso perd de la vitesse, recule en arrére et la caméra ne suit pas. J'ai essayé de regarder sur google et ils font absolument TOUS des tuto sur des perso qui avance sur une seule et unique ligne.

Alors ma question déjà est-ce possible de pouvoir faire un niveau à plusieurs étage et surtout comment je doit m'y prendre parce que là avec google je ne trouve pas mon bonheur.

Re: Tout nouvel utilisateur

Publié : 10 Août 2019 15:48
par Max
bloodfang a écrit :
10 Août 2019 15:39
Non mais le soucis était tout béte en fait j'ai utilisé textmesh pro, et fallais juste mettre la commande de texte mesh à la place du text.
oui effectivement.

Pour ton soucis de déplacement de personnage, ouvre un autre sujet. Pour chaque problème = un sujet.
Pour les recherches et la visibilité c'est nettement mieux.