Problème sur mon Projet

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
TheSub63
Messages : 3
Inscription : 02 Mai 2016 20:07

Problème sur mon Projet

Message par TheSub63 » 02 Mai 2016 20:13

Salut à tous, c'est mon premier message ici donc désolé si je n'ai pas posté dans la bonne catégorie
Alors voila j'ai un soucis, je viens de commencer unity et avec mon partenaire on bosse sur un mini jeu de foot.
On a un sélecteur de stade, de perso et de ballon, seulement voila, alors que le sélecteur de ballon marche nikel, le sélecteur de stade ne fonctionne pas et je ne voit pas mon erreur sur un script pourtant quasi-identique:

Code : Tout sélectionner

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Linq;
public class TerrainControl : MonoBehaviour {

    public Transform[] terrainList;
    public Transform currentTerrain;
    void Start () {
        currentTerrain = terrainList.Single( name => name.name == Global2.currentTerrain);
        if (Global2.currentTerrain != null)
        {
            InstantiateTerrain();
            if (Global2.currentTerrain == null) UnityEngine.SceneManagement.SceneManager.LoadScene("tselect");
        }
    }
    void InstantiateTerrain()
    {
        currentTerrain = Instantiate(currentTerrain, transform.position, currentTerrain.rotation) as Transform;
        currentTerrain.parent = transform;
    }

}
L'erreur se situe à
currentTerrain = terrainList.Single( name => name.name == Global2.currentTerrain);

Dites moi si il vous faut d'autre infos pour m'aider à résoudre mon problème, je suis vraiment bloqué ><'
Merci d'avance!

En effet, mauvaise section, et qui plus est, il manque les balises code. Une lecture de la Netiquette serait la bienvenue en tant que nouveau membre. Merci.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6222
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Problème sur mon Projet

Message par boubouk50 » 03 Mai 2016 10:20

Merci d'ajouter le code erreur + description de la console. Qu'on sache si c'est un problème d'affectation ou autre.

Code : Tout sélectionner

currentTerrain = terrainList.Single( name => name.name == Global2.currentTerrain);
name.name est surement une string
Global2.currentTerrain est bien une string? Ton code me fait dire un transform plutôt.
Donc: Compares-tu bien deux variables de même type?
Ensuite pour une comparaison de string, utilise plutôt Equals ou Compare

Code : Tout sélectionner

currentTerrain = terrainList.Single( name => name.name.Equals (Global2.currentTerrain.name));
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

TheSub63
Messages : 3
Inscription : 02 Mai 2016 20:07

Re: Problème sur mon Projet

Message par TheSub63 » 03 Mai 2016 19:12

D'abord merci pour l'edit de mon post, ensuite encore désolé pour avoir posté à l'arrache comme ça!

Ensuite boubouk, oui currentTerrain est bien un string :

Code : Tout sélectionner

    public static string currentTerrain;
Pour ce qui est de la console, j'ai ça:
Image

Qui se répète 1 fois pour chacun de mes stades,

Et ça:
Image

Qui me renvoie à la ligne du post 1

Et en utilisant ta correction, j'ai l'erreur "string doesn't contain a definition for name..." sur le .name de currentTerrain.name à la fin
Je suis encore novice sur Unity donc je ne suis même pas sur de ce que cela signifie...

En tout cas merci de ton aide :super:

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6222
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Problème sur mon Projet

Message par boubouk50 » 04 Mai 2016 09:18

currentTerrain.name tu oublies, c'était au cas où currentTerrain était un gameObject.
Ensuite NullObjectReference t'indique qu'une des variables n’est pas renseignée, soit ta liste TerrainList soit Global2.currentTerrain.

Code : Tout sélectionner

void Start () {
	if (Global2.currentTerrain != null)
	{
		if (terrainList.count > 0) //Tester si la liste de terrain n'est pas nulle
			currentTerrain = terrainList.Single( terrain => terrain.name == Global2.currentTerrain);
		else
			Debug.Log ("Liste de terrains non renseignée"); //Message console pour indication terrainList
			
		if (currentTerrain != null) //Tester s'il est possible d'instancier currentTerrain
			InstantiateTerrain();
		//Il faut surement gérer le else pour pas que tu restes planté dans cette condition
		//else 
		//{
		//	Debug.Log ("currentTerrain non renseigné");
		//	UnityEngine.SceneManagement.SceneManager.LoadScene("tselect");
		//}
	}
	else
	{
		Debug.Log ("Global2.currentTerrain n'est pas renseigné"); //Message console pour indication de valeur Global2.currentTerrain
		UnityEngine.SceneManagement.SceneManager.LoadScene("tselect");
	}
}
Voilà à à quoi un code devrait ressembler: il faut gérer toutes les possibilités de cas pour être sur que chaque variable soit bien renseignée, sinon des erreurs peuvent surgir.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

TheSub63
Messages : 3
Inscription : 02 Mai 2016 20:07

Re: Problème sur mon Projet

Message par TheSub63 » 08 Mai 2016 15:59

D'accord, merci j’essaierai de m'inspirer de ton code à l'avenir.
La sélection marche, mais bizarrement les erreurs n'ont pas disparu, mais je crois savoir d’où ça vient.
Merci de ton aide et bonne continuation ^^

Répondre

Revenir vers « (C#) CSharp »