Changer tous les matériaux d'un objet

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
ziropo
Messages : 52
Inscription : 19 Fév 2016 16:45

Changer tous les matériaux d'un objet

Message par ziropo » 26 Juil 2016 11:07

Bonjour,

Je cherche à changer l'alpha de tous mes objets ayant un certain tag pour faire un fondu jusqu'à qu'ils soient transparents.
Mes objets ont pour la plupart plusieurs matériaux.

Voilà le code que j'ai pour le moment :

Code : Tout sélectionner

var object : GameObject[];
var mat : Material[];
var color : Color;

object = GameObject.FindGameObjectsWithTag("Invisible");

function Update(){
	for (var obj: GameObject in object){
		for (var i = 0; i < mat.Length; i++){
			color.a -= 0.01f;
			obj.GetComponent.<Renderer>().material[i].color = color;
		}
	}
}
Unity m'indique l'erreur : BCE0048: Type 'UnityEngine.Material' does not support slicing.

Je comprends pas vraiment mon erreur.

Est-ce que quelqu'un peut m'éclairer ?

Merci d'avance.

Unity 5.3.5f1
Dernière édition par ziropo le 28 Juil 2016 18:40, édité 1 fois.

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

Re: Changer tous les matériaux d'un objet

Message par boubouk50 » 26 Juil 2016 11:28

Je pense que ça vient du fait que material n'est pas un tableau de matériau. Tu ne peux pas écrire material, tu dois utiliser materials.
Sinon, ton code a d'autres pétouilles:
- tu ne récupères pas la couleur du matériau
- tu soustrais 0.01f à chaque passage dans la boucle.
- tu ne contrôle pas le temps d'invisibilité
- tu devrais faire ton GetComponent en dehors de la 2e boucle pour éviter la redondance, un appel à GetComponent est lourd
"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

Verrouillé

Revenir vers « Unity le logiciel »