Interfaces (UI)
Un panneau de ton monde est un canvas Unity avec des contrôles uGUI et des textes TextMeshPro, construit dans l'éditeur comme d'habitude. Ton script les lit, les change, et écoute leurs événements.
Le canvas
Mets-le en World Space, avec un Tracked Device Graphic Raycaster (les joueurs le cliquent avec le rayon de leur manette en VR) et un Graphic Raycaster (avec le pointeur de la souris), comme les panneaux du monde d'exemple. Les joueurs le cliquent comme ils cliquent le menu (les commandes). Un canvas dessiné sur l'écran (Screen Space - Overlay) reste sous l'interface de NodeWorld (ce qu'un script ne peut pas bloquer).
Écouter un contrôle
using NodeWorld.Flux;
namespace MonMonde
{
[ClientOnly]
public class PanneauLampe : FluxScript
{
public Light lampe;
public Slider luminosite;
public Toggle allumee;
public Text titre;
protected override void Start()
{
luminosite.onValueChanged.AddListener(valeur => lampe.intensity = valeur);
allumee.onValueChanged.AddListener(valeur => lampe.enabled = valeur);
titre.text = "Lampe";
}
}
}Un écouteur tourne dans le script qui l'a ajouté. S'il lance une exception, il arrête son script, comme un callback. RemoveListener et RemoveAllListeners les retirent.
Ces écouteurs tournent dans le jeu du joueur qui clique : pour changer le monde pour tout le monde, synchronise-le (objets et valeurs synchronisés).
Les composants
| Composant | Ce qu'un script utilise |
|---|---|
Text (TextMeshPro, 3D ou UI, ou un Text UI) | text, color, fontSize |
Image (une Image avec un sprite, ou une Raw Image avec une texture) | sprite, texture, color, fillAmount |
Button | onClick |
Slider | value, minValue, maxValue, wholeNumbers, SetValueWithoutNotify, onValueChanged |
Toggle | isOn, SetIsOnWithoutNotify, onValueChanged |
Dropdown (uGUI ou TextMeshPro) | value, optionCount, GetOption, SetOption, AddOption, ClearOptions, SetValueWithoutNotify, onValueChanged |
InputField (uGUI ou TextMeshPro) | text, placeholder, isFocused, onValueChanged, onEndEdit, onSubmit |
Scrollbar | value, size, onValueChanged |
ScrollRect | normalizedPosition, horizontalNormalizedPosition, verticalNormalizedPosition, onValueChanged |
CanvasGroup | alpha, interactable, blocksRaycasts |
RectTransform | anchoredPosition, sizeDelta, anchorMin, anchorMax, pivot, GetWorldCorners, ForceRebuildLayout |
Canvas | enabled |
Chaque contrôle (Button, Slider, Toggle, Dropdown, InputField, Scrollbar) a interactable et Select(). Les méthodes …WithoutNotify changent une valeur sans lancer ses écouteurs : sers-t'en pour afficher une valeur venue du réseau.
Les champs de texte
Un joueur qui sélectionne un Input Field y tape avec le clavier de NodeWorld en VR, ou avec son clavier sur ordinateur ; Select() lui donne le clavier depuis un script. Lis text, et écoute onSubmit (le joueur a appuyé sur Entrée, ou sur la touche bleue du clavier VR) ou onEndEdit (il a quitté le champ). Pendant qu'un joueur tape, tes scripts ne reçoivent aucune touche. Voir les champs de texte.
Un texte au-dessus d'un objet
Le petit texte qu'un joueur voit en visant un objet (« S'asseoir », « Sonner ») n'est pas un canvas : c'est Interaction.SetText (interaction et commandes).
