Modifier un GUI Text en jeu

Questions à propos du GUI, y compris la partie script.
DL Rarity
Messages : 6
Inscription : 17 Fév 2013 19:12

Modifier un GUI Text en jeu

Message par DL Rarity » 17 Fév 2013 20:07

Bonjour/Bonsoir à tous, je m'excuse à l'avance de ne pas avoir regardé si il y avait déjà eu un sujet similaire, je prendrais le temps de le faire à l'avenir.

Voilà, je débute sur Unity 3D depuis 3 semaines, et je me demandais si il était possible de créer un JavaScript, permettant de modifier un GUIText pendant le jeu, car je souhaites créer un FPS, l'accès à la session (pour une version pre-alpha) se ferait en 3 scènes dans cet ordre : Menu principal ---> Compte à rebours avec vue d'ensemble de la map ---> Session de jeu.

Dans la 2ème scène (Compte à Rebours) je compte enfait prendre le script présent dans le pack TeleportKit du site "Formation-facile", afin de l'appliquer au décor, et en même temps un GUI Text au milieu de l'écran décomptant par exemple de 5 à 0 avec des "yield WaitForSeconds" avant de charger la scène de Session de jeu.

Voilà tout je remercie d'avance ceux qui prendront la peine de me répondre malgré le fait que je n'ai pas recherché sur le forum si il y avait déjà eu des réponses à une question similaire.

Bonne journée/Bonne soirée, DL Rarity.

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

Re: Modifier un GUI Text en jeu

Message par cayou66 » 17 Fév 2013 22:12

Il faudrait faire une pétition pour qu'ils arrêtent avec les GUITexture et GUIText chez UT...Vivement le prochain système de GUI.

Si tu veux utiliser du GUI d'Unity classique (pas les GUIText) tu peux faire:

Code : Tout sélectionner


var score : int = 0;

function OnGUI()
{
  GUI.Label(Rect(50,50,100,50), score.ToString());
}
Voilà par exemple pour afficher le score.
J'ai fais un p'tit tuto qui parle de ce genre de GUI sur mon site (signature), si ça t'intéresse.

DL Rarity
Messages : 6
Inscription : 17 Fév 2013 19:12

Re: Modifier un GUI Text en jeu

Message par DL Rarity » 17 Fév 2013 23:00

Merci cayou, j'ai déjà vu ton site il y a de ça une semaine à peine je m'y intéresserais d'avantage, même si je ne veux pas afficher mon score mais créer un décompte de temps, j'ai compris ce que tu voulais dire, merci à toi pour cette réponse.

DL Rarity
Messages : 6
Inscription : 17 Fév 2013 19:12

Re: Modifier un GUI Text en jeu

Message par DL Rarity » 18 Fév 2013 14:48

Bonjour, j'ai simplifié mon code que voilà :

Code : Tout sélectionner

var nombre : int = 5;

function OnGUI(){
	decompte();
}

function decompte(){

	GUI.Label(Rect(500, 200, 25, 25), nombre.ToString());
	
	do {
	
		yield WaitForSeconds (1);
		
		nombre--;
	}
	while (nombre != 0);
	
	Application.LoadLevel("Maptest");
}
Ce script est assigné à une Main Camera, le décompte marche mais... Pas correctement.
Quand je lance la scène, sur l'écran j'ai bien le "5", mais après une seconde ça passe à "3", puis presque instantanément ça passe à -1 puis charge la scène suivante (Maptest), sauriez-vous que dois-je corriger ?

Avatar de l’utilisateur
BenouKat
Messages : 178
Inscription : 29 Jan 2013 17:38
Localisation : Paris

Re: Modifier un GUI Text en jeu

Message par BenouKat » 18 Fév 2013 15:05

DL Rarity a écrit :Bonjour, j'ai simplifié mon code que voilà :

Code : Tout sélectionner

var nombre : int = 5;

function OnGUI(){
	decompte();
}

function decompte(){

	GUI.Label(Rect(500, 200, 25, 25), nombre.ToString());
	
	do {
	
		yield WaitForSeconds (1);
		
		nombre--;
	}
	while (nombre != 0);
	
	Application.LoadLevel("Maptest");
}
Ce script est assigné à une Main Camera, le décompte marche mais... Pas correctement.
Quand je lance la scène, sur l'écran j'ai bien le "5", mais après une seconde ça passe à "3", puis presque instantanément ça passe à -1 puis charge la scène suivante (Maptest), sauriez-vous que dois-je corriger ?
Parce que c'est pas du tout comme ça que ça marche :)

ton "yield WaitForSeconds()" doit s'utiliser dans une coroutine.

OnGUI fonctionne comme une boucle Update (même si c'est pas exactement vrai), et va tourner tout le temps. Les WaitForSeconds ne marche pas ici je crois.

Il faut que tu fasses une Coroutine qui décrémente une variable, et dans la GUI tu affiches simplement la valeur de ta variable.

Je te laisse te renseigner sur les coroutines : http://docs.unity3d.com/Documentation/S ... Yield.html

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

Re: Modifier un GUI Text en jeu

Message par cayou66 » 18 Fév 2013 16:40

Tu devrais faire des réponses toutes faites BenouKat au sujet des coroutines :P

DL Rarity
Messages : 6
Inscription : 17 Fév 2013 19:12

Re: Modifier un GUI Text en jeu

Message par DL Rarity » 18 Fév 2013 22:21

Merci pour les coroutines, mais alors comment je règle mon problème ? Je sais que je devrais me débrouiller mais quelqu'un pourrait me donner la solution s'il vous plaît ? Ah oui le titre n'est plus tellement approprié comme je veux modifier un GUI.Label, ou alors est-il possible d'afficher une image au format GIF puis simplement mettre dans mon code "yield WaitForSeconds" et un "Application.LoadLevel("Maptest")" ?

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

Re: Modifier un GUI Text en jeu

Message par cayou66 » 18 Fév 2013 23:06

Perso j'aurai fait ça (si tu veux faire un décompte):

Code : Tout sélectionner

var nombre : int = 5;

function Start()
{
  InvokeRepeating("decompte", 1f, 1f);
}

function OnGUI(){
    GUI.Label(Rect(500, 200, 25, 25), nombre.ToString());
    if(nombre == 0)
    {
       Application.LoadLevel("Maptest");
    }
}

function decompte()
{
    nombre--;
}
La ligne

Code : Tout sélectionner

InvokeRepeating("decompte", 1f, 1f);
Tu peux la placer ailleurs que dans le start, si tu veux déclencher ton compteur plus tard.

DL Rarity
Messages : 6
Inscription : 17 Fév 2013 19:12

Re: Modifier un GUI Text en jeu

Message par DL Rarity » 19 Fév 2013 11:44

Merci ça marche du tonnerre :D

Après je connaissais pas "InvokeRepeating", j'ai pas encore trop maîtrisé le Python, mais merci je me renseignerais la dessus dans la doc, en attendant merci et bonne journée !

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: Modifier un GUI Text en jeu

Message par Max » 19 Fév 2013 11:45

DL Rarity a écrit : j'ai pas encore trop maîtrisé le Python
:shock:
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Répondre

Revenir vers « L'interface GUI »