Bonjour,
J'ai fait plusieurs essais et tests avec vos instructions et propositions. Bonne nouvelle, je n'ai pas d'erreurs, mais petit bemol : mes objets mesh ne changent pas de couleurs au clic du bouton UI qu'elle que soit la couleur.
Je pense que la mise en oeuvre est mauvaise. Des que j'aurais plus de temps, je continue.
Bonne semaine.
Dossier fonctionnel pour grouper et gèer la couleurs des meshRenderer
Re: Dossier fonctionnel pour grouper et gèer la couleurs des meshRenderer
Bonjour,
J'ai trouve un peu de temps pour travailler sur vos solutions. (sauf EmileF : sorry, je ne sais pas comment utiliser ton script). Je n'ai pas un tres grand niveau en dev cela fait deux mois que j'ai commence et je le fais sur mon temps libre, bref....
Pour l'historiaue, le script ci-dessous fonctionne
Cependant je ne peux mettre qu'un mesh renderer, j'en reviens donc au debut du sujet
Le script est place sur un GameObjet cree avec color et Rend
Celui-ci est ensuite glisser sur un button GUI
Cela agit sur le material
Ca fonctionne mais je ne peux ajouter qu'un rend comme vous le voyez sur premiere image.
Merci de vos propositions precedentes qui ont bien servi. Je vais essayer de chercher la proposition de travailler sur le material direct
Bonne journee
J'ai trouve un peu de temps pour travailler sur vos solutions. (sauf EmileF : sorry, je ne sais pas comment utiliser ton script). Je n'ai pas un tres grand niveau en dev cela fait deux mois que j'ai commence et je le fais sur mon temps libre, bref....
Pour l'historiaue, le script ci-dessous fonctionne
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CColorTissuAV : MonoBehaviour{
public Material[] materials;//Allows input of material colors in a set size of array;
public Renderer Rend; //What are we rendering? Input object(Sphere,Cylinder,...) to render.
private int index = 1;//Initialize at 1, otherwise you have to press the ball twice to change colors at first.
public void buttonPressed(){
if (materials.Length == 0)//If there are no materials nothing happens.
return;
index += 1;//When button is pressed down we increment up to the next index location
if (index == materials.Length + 1)//When it reaches the end of the materials it starts over.
index = 1;
print (index);//used for debugging
Rend.sharedMaterial = materials [index - 1]; //This sets the material color values inside the index
}
}
Le script est place sur un GameObjet cree avec color et Rend
Celui-ci est ensuite glisser sur un button GUI
Cela agit sur le material
Ca fonctionne mais je ne peux ajouter qu'un rend comme vous le voyez sur premiere image.
Merci de vos propositions precedentes qui ont bien servi. Je vais essayer de chercher la proposition de travailler sur le material direct
Bonne journee
Re: Dossier fonctionnel pour grouper et gèer la couleurs des meshRenderer
Desole pour les balises, le bouton n'a pas fonctionne pour placer le code. Il est donc en texte basic.
Re: Dossier fonctionnel pour grouper et gèer la couleurs des meshRenderer
Tres simple comme utilisation:
Il te faut un objet avec un MeshRenderer, et tu appelles la fonction en précisant le MeshRenderer (ton renderer par exemple) et la couleur en paramètres :
Voici un exemple d'utilisation.
Voilà un exemple d'utilisation.
Tu crées un empty dans lequel tu mets ce script.
Tu crées 5 (par exemple) GameObjects comme cube, sphere ou autres équipés d'un mesh renderer.
Tu fait glisser tes GameObjects dans la propriété Meshes du script.
Dans la propriété Colors du script tu crées autant de couleurs que tu as d'objets.
Tu lances le jeu et tu auras chaque objet qui prendra la couleur correspondante.
A toi d'adapter le script selon tes besoins. Mais avec cette fonction, plus de contrainte de matérials différents ou de groupe de matérial pour une couleur.
Tu peux même calculer un dégradé (par exemple) pour tes objets. Entière liberté.
Pour ce qui est de ton projet, je n'ai pas bien compris si tu veux changer la couleur de tes objets un par un à chaque fois que tu cliques sur ton bouton, ou changer la couleur de tous tes objets?
Si tu veux changer la couleur de tous tes objets en même temps, utilise la méthode de boubouk, tu équipes tous tes objets avec un même material, et tu changes la couleur de ton matérial sans t'occuper des renderer.
Si tu veux changer la couleur de tes objets un par un, tu peux équiper tes objets d'un même matérial ou pas,
il te faut récupérer la liste de tes renderer et utiliser ma fonction à chaque pression sur ton bouton en précisant l'objet concerné et sa couleur.
J'espère que ça pourra t'aider.
Il te faut un objet avec un MeshRenderer, et tu appelles la fonction en précisant le MeshRenderer (ton renderer par exemple) et la couleur en paramètres :
Voici un exemple d'utilisation.
Code : Tout sélectionner
public class Test : MonoBehaviour
{
public MeshRenderer[] Meshes;
public Color[] Colors;
// Use this for initialization
void Start ()
{
for (int i = 0; i < Meshes.Length; i++)
{
Colorise(Meshes[i], Colors[i]);
}
}
private void Colorise(MeshRenderer mesh, Color color)
{
MaterialPropertyBlock block = new MaterialPropertyBlock();
mesh.GetPropertyBlock(block);
block.SetColor("_Color", color);
mesh.SetPropertyBlock(block);
}
}
Tu crées un empty dans lequel tu mets ce script.
Tu crées 5 (par exemple) GameObjects comme cube, sphere ou autres équipés d'un mesh renderer.
Tu fait glisser tes GameObjects dans la propriété Meshes du script.
Dans la propriété Colors du script tu crées autant de couleurs que tu as d'objets.
Tu lances le jeu et tu auras chaque objet qui prendra la couleur correspondante.
A toi d'adapter le script selon tes besoins. Mais avec cette fonction, plus de contrainte de matérials différents ou de groupe de matérial pour une couleur.
Tu peux même calculer un dégradé (par exemple) pour tes objets. Entière liberté.
Pour ce qui est de ton projet, je n'ai pas bien compris si tu veux changer la couleur de tes objets un par un à chaque fois que tu cliques sur ton bouton, ou changer la couleur de tous tes objets?
Si tu veux changer la couleur de tous tes objets en même temps, utilise la méthode de boubouk, tu équipes tous tes objets avec un même material, et tu changes la couleur de ton matérial sans t'occuper des renderer.
Si tu veux changer la couleur de tes objets un par un, tu peux équiper tes objets d'un même matérial ou pas,
il te faut récupérer la liste de tes renderer et utiliser ma fonction à chaque pression sur ton bouton en précisant l'objet concerné et sa couleur.
J'espère que ça pourra t'aider.
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.
Re: Dossier fonctionnel pour grouper et gèer la couleurs des meshRenderer
C'est bien ça, le projet c'est une espadrille en 3d qui représente une vraie. Chaque objet de cette espadrille doit changer de couleur indépendamment par un bouton.
la partie avant => un bouton par couleur
la partie arrière => un bouton par couleur...
le fil => un bouton par couleur
Tu cliques et l'avant devient vert, l'arrière devient rouge et le fil sera jaune par exemple.
J'ai un menu pour sélectionner la taille de la pompe, les couleurs, les images si on veut télécharger et apposer des images. Pour le principe de télécharger et appliquer une image, j'en suis pas encore là, c'est la prochaine étape.
Et valider
Objectif final = créer un configurateur sur le même principe que les T-shirts custom qu'on peut faire sur le net. Intégrer ce futur configurateur à un site web "propulser" par wordpress.
Bon w-e à vous
la partie avant => un bouton par couleur
la partie arrière => un bouton par couleur...
le fil => un bouton par couleur
Tu cliques et l'avant devient vert, l'arrière devient rouge et le fil sera jaune par exemple.
J'ai un menu pour sélectionner la taille de la pompe, les couleurs, les images si on veut télécharger et apposer des images. Pour le principe de télécharger et appliquer une image, j'en suis pas encore là, c'est la prochaine étape.
Et valider
Objectif final = créer un configurateur sur le même principe que les T-shirts custom qu'on peut faire sur le net. Intégrer ce futur configurateur à un site web "propulser" par wordpress.
Bon w-e à vous
Re: Dossier fonctionnel pour grouper et gèer la couleurs des meshRenderer
Je pense que dans ton cas,
tu crées 3 matérials, un pour l'avant, un pour l'arrière, et un pour le fil.
Tu équipes les objets avant du material les concernant,
les objets arrière du material arrière,
et les objets du fil avec son material
Dans ton script, tu références tes trois materials
et, tu crées autant de fonction que tu as de boutons, et dans ces fonctions, tu changes la couleur du material concerné.
C'est la méthode que Boubouk t'indiquait.
tu crées 3 matérials, un pour l'avant, un pour l'arrière, et un pour le fil.
Tu équipes les objets avant du material les concernant,
les objets arrière du material arrière,
et les objets du fil avec son material
Dans ton script, tu références tes trois materials
et, tu crées autant de fonction que tu as de boutons, et dans ces fonctions, tu changes la couleur du material concerné.
C'est la méthode que Boubouk t'indiquait.
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.