Générer une infobulle

a marqué ce sujet comme résolu.
Auteur du sujet

Bonjour,
j’essaye depuis peu de créer des infobulles pour l’interface de mon jeu. Celle-ci est générée dans la fonction OnGui et utilise par conséquent la classe GUI.

Pour réaliser mes infobulles, j’ai utilisé la propriété GUI.tooltip :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
// Génération des éléments de l'interface
GUILayout.BeginArea(new Rect(4, 4, Screen.width - 4, TAILLE - 4));
GUILayout.BeginHorizontal(GUILayout.ExpandWidth(false));
GUILayout.Label(new GUIContent("Mon label","Infobulle"), GUILayout.ExpandWidth(false));
GUILayout.EndHorizontal();
GUILayout.EndArea();

// ... du code ...

// Génération de l'infobulle
if (GUI.tooltip != string.Empty)
{
    Cursor.visible = false;
    GUI.skin = toolTipSkin;
    GUI.BeginGroup(new Rect(Event.current.mousePosition.x, Event.current.mousePosition.y, TOOLTIP_MAX_WIDTH, 500));
    GUILayout.Box(GUI.tooltip, GUILayout.MaxWidth(TOOLTIP_MAX_WIDTH));
    GUI.EndGroup();
}
else
    Cursor.visible = true;

Cependant ça ne marche pas et j’obtiens l’erreur : ArgumentException: Getting control 0's position in a group with only 0 controls when doing Repaint Aborting.
J’ai vu que l’utilisation de OnGui était particulière et on m’a même recommandé de ne pas l’utiliser.

Que faire, et comment puis-je arriver à mes fins ?
Merci d’avance !

La curiosité est le plus beau des défauts

+0 -0

Salut,
Je ne sais pas qui t’as recommandé de ne pas utiliser OnGui() mais sache qu’il avait totalement raison ! Il s’agit d’une manière complètement obsolète de gérer l’UI dans Unity. Depuis la version 4.6, il existe tout un tas de component propre à l’UI : des canvas, des boutons, des images, des srollbars et j’en passe…

Bon il n’y pas de component tout fait pour les tooltips mais ça se fait sans trop forcer. Une image, dans laquelle on place un texte le tout resize à la bonne taille en fonction du contenu. ;)


Ps: Note que je parle de l’UI dans un jeu ! Les fonctions propres à OnGui() comme GUILayout.Label() ont encore leur utilité pour tout ce qui concerne l’interface dans Unity comme pour faire un plugin par exemple.

GoldenPanic, est maintenant disponible sur Steam !

+0 -0
Auteur du sujet

Salut,
après plusieurs recherches j’ai en effet vu que les GUI ne sont plus d’actualités. Du coup, j’ai recommencé toute mon interface avec des canevas et Cie comme il faut et ça marche bien :)

J’ai toujours un petit problème mineure (le Find n’arrive pas à trouver le canevas de mon infobulle, je suis obligé de le passer par glisser-déposer par Unity dans tout les objets ayant besoin d’une infobulle).

La curiosité est le plus beau des défauts

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte