Page 1 sur 1

[Résolu]rechercher plusieurs materiaux

Publié : 14 Juin 2015 19:48
par nigel
C'est encore moi salut,

j'utilise ce code pour rechercher plusieurs matériaux dans mon object,
Le probleme est assez bizarre, Je suis sensé rentrer dans la condition if de la seconde boucle foreach,
car le premier debug.log m'indique que la condition est "vrai" ,pourtant le second reste muet et ma couleur est inchangé
(il parait que les tableau sont copiés je verrai ça après, mais je devrai quand même au moins pouvoir afficher mon second debug.log non?)

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class RandomRoomColor : MonoBehaviour {

	// Use this for initialization
	void Start () {
		
		
		
		
	

		MeshRenderer[] rend= GetComponentsInChildren<MeshRenderer>();
		
		foreach(MeshRenderer ren in rend)
		{
			Material[] mats= ren.materials;
			
			foreach(Material mat in mats)
			{
				Debug.Log(mat.name);

				if (mat.name=="Mat_mur_1")
				{
					mat.color= Color.blue;
					Debug.Log("dedans");

				}

				 
			}
		}
		
		
	}

	
}

Re: rechercher plusieurs materiaux

Publié : 15 Juin 2015 10:34
par sotec
je ne vois pas d'erreur au premier coup d'oeil, essaye de faire un coup de debugger pour comparer les variable, ( pour comparer des chaine de char, je les passe souvent en minuscule ou majuscule (ToLower() / ToUpper())

ensuite, dans ton debug.log remplace :
Debug.Log(mat.name); par Debug.log(mat.name=="Mat_mur_1" ? "condition à true" : "Condition à false");

tu saura reellement si ta condition est bonne

Re: rechercher plusieurs materiaux

Publié : 15 Juin 2015 11:26
par nigel
J'ai trouvé c’était un peu ma faute
Faut dire que c'est pas évident pour un débutant haha

Les matériaux instanciés sont concaténés en + (instance)

Donc il faut comparer dans la condition avec "nom du mat (instance)"
Et machinalement je voulais pas voir le "(instance)" en plus dans la console, je ne pensais pas que le nom du mat était modifié.

Mais le fait d'avoir chercher pendant des heures m'a beaucoup appris