bouton GUI qui change la couleur de mon objet

Questions à propos du GUI, y compris la partie script.
sephitoth
Messages : 495
Inscription : 06 Avr 2012 13:47
Localisation : toulouse

Re: bouton GUI qui change la couleur de mon objet

Message par sephitoth » 15 Mai 2013 09:18

cayou66 a écrit :
Freelax a écrit :
Dans ce cas, tu peux toujours changer de GUIStyle
Guiskin c'est simple et rapide avec les customs styles
Non c'est vraiment pourri ;)
Je suis pas d'accord, une fois que tu as bien assimilé le truc ça coule de source la GUISkin
J'étais athée jusqu’à ce que je découvre que j'étais dieu !

ninja_tuna
Messages : 29
Inscription : 14 Mai 2013 11:26

Re: bouton GUI qui change la couleur de mon objet

Message par ninja_tuna » 15 Mai 2013 10:50

salut les gars !

je suis un peu perdu... j'ai donc ce code :

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class couleur : MonoBehaviour {

public GameObject objetCible ;
public Color newColor01 ;

void OnGUI ()
{
		
Rect rect = new Rect(10,10,10,10);
GUI.DrawTexture(rect, texture);
if(rect.Contains(Input.mousePosition) && Input.GetMouseButtonDown(0))
			
   {
      objetCible.renderer.material.color = newColor01 ;
   }
}
	
}
je dois l'attacher à l'objet dont je souhaite faire changer la couleur ? si oui, il ne me déclare pas les variables publiques ds l'inspector ..
est-ce-que je dois déclarer une variable public rect ?

Pico57
Messages : 576
Inscription : 19 Fév 2013 16:30
Localisation : Cluny

Re: bouton GUI qui change la couleur de mon objet

Message par Pico57 » 15 Mai 2013 11:49

Y a plusieurs choses à voir :

1- Rien ne s'affiche dans ton Inspector car tu as une erreur dans le script. Lis les message de la console, c'est explicite. Ce n'est pas le rect qu'il faut déclarer, mais la texture.
2- Tu peux mettre le script où tu veux, il suffit que tu renseigne bien le champ objetcible ensuite. Si tu met le script sur l'objet à modifier, tu ne devrais pas avoir besoin de déclarer d'objetcible et en remplaçant :

Code : Tout sélectionner

objetCible.renderer.material.color = newColor01 ;
par

Code : Tout sélectionner

renderer.material.color = newColor01 ;
.

ninja_tuna
Messages : 29
Inscription : 14 Mai 2013 11:26

Re: bouton GUI qui change la couleur de mon objet

Message par ninja_tuna » 15 Mai 2013 15:21

en effet plus d'erreur ! par contre, ça ne fonctionne pas :D la couleur de mes deux objets ne change pas qd je clique sur le rectangle,

par contre qd j'ajoute un Debug.Log et que je lance, les couleurs définies apparaissent sans que j'ai appuyé .. Que passa ???

Code : Tout sélectionner

public class couleur : MonoBehaviour {

public Color shader;
public Texture texture;
	
void OnGUI ()
		
{

Rect rect = new Rect(30,30,30,30);
GUI.DrawTexture(rect, texture);
if(rect.Contains(Input.mousePosition) && Input.GetMouseButtonDown(0))

	Debug.Log ("hola");		
			
   {
      renderer.material.color = shader;		
   }
}
	
}

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: bouton GUI qui change la couleur de mon objet

Message par cayou66 » 15 Mai 2013 15:39

Attention au accolades...

Code : Tout sélectionner

Rect rect = new Rect(30,30,30,30);
GUI.DrawTexture(rect, texture);
if(rect.Contains(Input.mousePosition) && Input.GetMouseButtonDown(0))

   Debug.Log ("hola");      
         
   {
      renderer.material.color = shader;      
   }
Si tu décides de mettre un block if il te faut les parenthèses juste après le if, tu ne dois pas mettre des trucs entres...
C'est la base du code ça.

ninja_tuna
Messages : 29
Inscription : 14 Mai 2013 11:26

Re: bouton GUI qui change la couleur de mon objet

Message par ninja_tuna » 15 Mai 2013 16:04

oui mais je cherchais une solution au fait que qd je mette le Debug ici, il me fasse apparaître les couleurs sans que j'appuie sur le rect.

je voulais voir si le rect réagit qd j'appuie dessus et apparemment non ...

c'est un Gui texture avec une image, j'ai essayé différentes fonction ( OnMouseUp etc .. ) mais je n'arrive pas à trouver

quelqu'un aurait une meilleure idée ?

Pico57
Messages : 576
Inscription : 19 Fév 2013 16:30
Localisation : Cluny

Re: bouton GUI qui change la couleur de mon objet

Message par Pico57 » 15 Mai 2013 18:09

Tu as mal compris la réflexion de cayou

Avec la façon dont tu as placé tes accolades, si la condition if est respectée, le debug va s'afficher, par contre le changement de couleur est affecté à tout les coups quel que soit la réponse à la condition if.

Il y a 2 façons de construire un if :
1-tu veux lancer une seule instruction et alors tu peux écrire

Code : Tout sélectionner

if(ma_condition)
   mon_action();
2-tu veux lancer un ensemble d'action et alors, tu doit utiliser les accolades directement à la suite

Code : Tout sélectionner

if(ma_condition)
{
   mon_action01();
   mon_action02();
   [.......]
}
Toi, tu a tenté un mix des 2 XD.
Ce qu'il te faut regarder c'est est-ce que ton débug s'affiche ? Avec ce que tu dit, je déduit que l'action de changement des couleurs ne comporte pas d'erreur mais c'est seulement ta condition qui ne doit jamais être remplie. Je parie que ton débug ne s'affiche donc pas quand tu clique sur ta texture.
Après, je n'ai jamais créé de bouton par cette méthode, pour le moment, je ne vois pas où est l'erreur. dsl.

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: bouton GUI qui change la couleur de mon objet

Message par cayou66 » 15 Mai 2013 19:47

Merci pour les explications, j'ai écris ça ce matin devant mon p'tit dèj j'étais pas vraiment reveillé et inspiré ;)

Pico57
Messages : 576
Inscription : 19 Fév 2013 16:30
Localisation : Cluny

Re: bouton GUI qui change la couleur de mon objet

Message par Pico57 » 16 Mai 2013 09:42

par cayou66 » 15 Mai 2013, 14:39
cayou66 a écrit :Merci pour les explications, j'ai écris ça ce matin devant mon p'tit dèj j'étais pas vraiment reveillé et inspiré ;)
:shock: :shock: :o :o :shock: :shock:

ninja_tuna
Messages : 29
Inscription : 14 Mai 2013 11:26

Re: bouton GUI qui change la couleur de mon objet

Message par ninja_tuna » 16 Mai 2013 10:06

il est au Canada du coup ça devait être le matin c'est lui :D

Merci pour votre soutien !

alors l'erreur venait du fait que mon mouseInput n'avait pas les mêmes coordonnées que le rect du coup le clic n'était pas détecté et dc forcément pas d'erreur ds la box..

Code : Tout sélectionner

rect.Contains(new Vector2(Input.mousePosition.x, Screen.height - Input.mousePosition.y))

qd je clique ça fonctionne !

par contre vous connaissez un moyen qui permet de glisser/déposer un shader dans Color au lieu de modifier les RVB ?

Répondre

Revenir vers « L'interface GUI »