[RESOLU] Comment utiliser les toggle (case à cocher) ?

Questions à propos du GUI, y compris la partie script.
aclanto
Messages : 16
Inscription : 16 Août 2016 12:14

[RESOLU] Comment utiliser les toggle (case à cocher) ?

Message par aclanto » 16 Août 2016 12:45

Bonjour tout le monde,

Je suis débutant sur unity 3D.

J'ai tenté d'utiliser un toggle, le probleme c'est qu'il se comporte comme un bouton normale c'est à dire on peut cliquer dessus et il fait ce pourquoi il est programmé. Mais il ne se coche pas et donc il ne se décoche pas ou on peut dire qu'il reste toujours décoché par défaut. Quand on lance le programme par son intermédiaire on ne peut par arrêter ce programme par son intermédiaire. :inlove:

J'ai pourtant fais des recherches sur internet et je n'ai pas trouvé grand chose.
C'est pour cela que je vous pose cette question basique et surement évidente pour certains :

Comment utilise-t-on les toggles ?

Merci par avance pour votre réponse.

Bonne journée à toutes et à tous.

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

Re: Comment utiliser les toggle (case à cocher) ?

Message par boubouk50 » 17 Août 2016 10:00

Peux-tu nous montrer ce que tu as fait stp?

Pour les tutos, tu tapes Unity toggle button UI, par exemple, et tu as des exemples d'utilisation (en anglais généralement) qui te permettent (même si tu ne pipes rien à l'anglais) de voir comment ça fonctionne en gros.
"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

aclanto
Messages : 16
Inscription : 16 Août 2016 12:14

Re: Comment utiliser les toggle (case à cocher) ?

Message par aclanto » 18 Août 2016 01:20

Bonsoir boubouk50,

Je te remercie pour ton message qui m'a bien aidé. :)

Je suis entrain de faire un jeu qui est une sorte de "space invaders".
je veux utiliser un toggle dans le menu "pause" pour donner le choix à mes utilisateurs d'avoir les tires automatiques sur leur vaisseaux afin que le jeu soit plus pratique sur les Smartphones et les tablettes mais qu'on puisse aussi garder le contrôle de l'arme du vaisseau si on a un bon vieil ordinateur ! :cote:

J'ai programmé en C#.
Dans le fichier où l'on définit le contrôle du vaisseau, j'ai créé une variable static booléenne t et j'ai écris que si
"t == true", il y a le tire automatique.
Ensuite j'ai créé un autre fichier avec une fonction "tire" qui permet de passer t à "true" quand on coche le toggle. Biensure, j'ai paramétré cette dernière fonction dans le "On Value Change (Boolean)" du toggle.

Voici le code de ces deux fichiers :

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

[System.Serializable]
public class Done_Boundary 
{
	public float xMin, xMax, zMin, zMax;
}

public class Done_PlayerController : MonoBehaviour
{
	public float speed;
	public float tilt;
	public Done_Boundary boundary;

	public GameObject shot;
	public Transform shotSpawn;
	public float fireRate;
    public int vie;
    public static bool t = false;

    private float nextFire;
	
	void Update ()
	{
		if (((Input.GetButton("Fire1") || Input.GetKeyDown(KeyCode.Space) || t == true) && Time.time > nextFire)) 
		{
			nextFire = Time.time + fireRate;
			Instantiate(shot, shotSpawn.position, shotSpawn.rotation);
			GetComponent<AudioSource>().Play ();
		}
	}

	void FixedUpdate ()
	{
		float moveHorizontal = Input.GetAxis ("Horizontal");
		float moveVertical = Input.GetAxis ("Vertical");

		Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
		GetComponent<Rigidbody>().velocity = movement * speed;
		
		GetComponent<Rigidbody>().position = new Vector3
		(
			Mathf.Clamp (GetComponent<Rigidbody>().position.x, boundary.xMin, boundary.xMax), 
			0.0f, 
			Mathf.Clamp (GetComponent<Rigidbody>().position.z, boundary.zMin, boundary.zMax)
		);
		
		GetComponent<Rigidbody>().rotation = Quaternion.Euler (0.0f, 0.0f, GetComponent<Rigidbody>().velocity.x * -tilt);
	}
}

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class Done_coche : MonoBehaviour
{
    

    public void tire()
    {
        Done_PlayerController.t = true;
    }
   

    }

Encore merci pour ton aide, boubouk50.

Bonne soirée. :)

Cordialement.

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

Re: Comment utiliser les toggle (case à cocher) ?

Message par boubouk50 » 18 Août 2016 09:30

Et pour la désactivation? Parce que là je vois que tu passes t à true, mais quand tu décoches le bouton radio, il faut bien le passer à false, non?

Par exemple:

Code : Tout sélectionner

public void ActiverTir (bool bt_value)
{
        Done_PlayerController.t = bt_value;
}
"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

aclanto
Messages : 16
Inscription : 16 Août 2016 12:14

Re: Comment utiliser les toggle (case à cocher) ?

Message par aclanto » 19 Août 2016 02:08

Bonsoir boubouk50,

Je te remercie pour ton message.

Maintenant grâce à toi, j'ai très bien compris le principe du toggle.
J'ai tellement bien compris qu'il me semble que je deviens un spécialiste du toggle ! :-D

Effectivement, tu avais raison : s'il se comportait comme un bouton, parce que je l'avais programmé seulement quand ma variable "t" était sur "true" et du coup quand "t" est passé sur "false" le programme ne réagir pas ; donc il continuait comme si "t" était sur "true", puisque je ne lui ai pas dit d'arrêter l'action que "t" étant sur "true" avait déclenchée.

Je n'avais aussi pas bien compris qu'il est inutile de préciser, dans le programme, quand "t" est sur "true" ou sur "false".
Car avec la solution que tu m'a donné, boubouk50, est très simple :
Si le toggle est coché "t" est sur "true".
Si le toggle est décoché "t" est sur "false".

Pour ceux qui veulent personnaliser l'apparence de leur toggle voici quelques remarques et conseils :

L'apparence des toggles se gère un peu comme celle des boutons en mettant un game object dans la case "Target Graphic", à ceci près qu'on peut aussi gérer apparence de l'encoche en mettant un game object dans la case "Graphic" sous le "Is On" qui permet par défaut de cocher ou décocher notre case et sous le "Toggle Transition".
Comme pour un bouton, on peut lui attribuer une couleur ou une image selon l'état d'une case Toggle, par exemple si elle est survolée ou pressé, etc...
Pour une personnalisation plus avancé, cliquez sur les objets appelé en général "Background" et "Checkmark" dans le sous-menu "Toggle" de "Hierarchy". "Checkmark" est lui-même un sous-menu de "Background".
Par défaut la position de "Background" et "Checkmark" sont correct, en personnalisant, viellez à ce que cet position reste correct sous peine amoindrir l'apparence de votre Toggle et même de ne plus voir l'encoche quand ce dernier est coché.

Merci encore, boubouk50, pour ton aide précieuse qui me permettra d'avancer dans le développement de mon jeu.
Il pourra donc sortir prochainement sur mon site http://www.aclanto.com site où il y a déjà un prototype d'un autre jeu vidéo qu'il faudra que je perfectionne avec Unity 3D.

Très bonne soirée. :)

Bien cordialement.

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

Re: Comment utiliser les toggle (case à cocher) ?

Message par boubouk50 » 19 Août 2016 09:36

Merci beaucoup pour ces informations complètes! :super:

Je marque le sujet RESOLU, la prochaine fois, pense à le faire toi-même en éditant le titre du premier message avec [RESOLU].
"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

aclanto
Messages : 16
Inscription : 16 Août 2016 12:14

Re: [RESOLU] Comment utiliser les toggle (case à cocher) ?

Message par aclanto » 19 Août 2016 18:40

Bonsoir boubouk50, Bonsoir tout le monde, :)

Merci boubouk50, d'avoir mise mon sujet en "[RESOLU]" ; la prochaine fois, je ne manquerai pas de le faire
même-moi.

Je voulais faire une petite précision, j'ai écris :
... s'il se comportait comme un bouton, parce que je l'avais programmé seulement quand ma variable "t" était sur "true" et du coup quand "t" est passé sur "false" le programme ne réagir pas ; donc il continuait comme si "t" était sur "true", puisque je ne lui ai pas dit d'arrêter l'action que "t" étant sur "true" avait déclenchée.
Dans cette analyse, j'ai commis une erreur , :oops: car en fait, avec mon programme d'origine, "t" ne passe, jamais à "false" quand je coche ou je décoche le toggle, il passe toujours à "true" donc autrement dit il reste à "true" et c'était bien là où était le problème.

Et d'ailleurs, boubouk50, tu me l'avais bien dit :
Et pour la désactivation? Parce que là je vois que tu passes t à true, mais quand tu décoches le bouton radio, il faut bien le passer à false, non?
... mais je n'ai fait pas attention. :mrgreen: quel étourdi ! :taré1:

Cette précision faite, je souhaite à toutes et à tous, ainsi qu'à toi, boubouk50, une bonne soirée et un excellent week-end. :hello:

Bien cordialement.

Répondre

Revenir vers « L'interface GUI »