Exposer des variables
Rendre un état lisible ou modifiable, appliquer les bornes et comprendre SET.
Objectif
Publier une valeur initiale dans le schéma et, si elle est modifiable, accepter les messages SET de Pulse Control.
Propriété modifiable
using PulseSDK.Attributes;
using PulseSDK.Core;
using UnityEngine;
public sealed class AudioSettings : PulseBehaviour
{
[SerializeField, Range(0f, 1f)] private float volume = 0.8f;
[PulseVariable("audio.volume", Min = 0f, Max = 1f)]
public float Volume
{
get => volume;
set
{
volume = value;
AudioListener.volume = volume;
}
}
}Un SET est converti, borné si nécessaire, puis affecté via le setter. Placez donc l'effet métier dans le setter ou dans une méthode qu'il appelle.
Variable en lecture seule
Une propriété sans setter est publiée avec writable: false :
[PulseVariable("session.participants")]
public int ParticipantCount => activeParticipants.Count;Pulse Control peut afficher sa valeur initiale, mais un SET reçoit READ_ONLY.
La version 0.1.3 n'émet pas de DELTA lorsque ParticipantCount change. La nouvelle valeur n'est donc pas poussée en temps réel par le SDK actuel.
Champs ou propriétés ?
L'attribut accepte les deux :
[PulseVariable("display.subtitles")]
public bool SubtitlesEnabled = true;Préférez une propriété dès que l'écriture doit déclencher un effet, une validation ou une sauvegarde. Un champ est considéré comme modifiable ; n'annotez pas un champ readonly ou const.
Types et bornes
Types convertibles : int, float, double, bool, string et enum.
MinetMaxsont desfloatfacultatifs.- Le clamp est appliqué aux variables
intetfloat. - En 0.1.3, les bornes sont décrites mais ne clampent pas un
double. - Avec les deux bornes, le schéma suggère un widget
slider; sinon, il suggèrelabel.
public enum Language
{
French = 1,
English = 2
}
[PulseVariable("experience.language")]
public Language CurrentLanguage { get; set; } = Language.French;Vérité d'exécution d'un SET
Pour la version actuelle :
- le contrôleur envoie
SETavec uncid; - le SDK recherche la variable et convertit la valeur ;
- il applique le clamp pris en charge et appelle le setter ;
- l'ACK indique si l'écriture a réussi.
Un ACK positif confirme l'application du setter. Il n'est pas suivi automatiquement d'un DELTA émis par le package 0.1.3.
| Code | Signification |
|---|---|
UNKNOWN_VAR | ID absent ou composant désactivé |
READ_ONLY | propriété sans setter |
BAD_ARGS | conversion ou écriture impossible |
Éviter les collisions
Le registre est global. Si deux composants actifs utilisent audio.volume, le dernier enregistré remplace le précédent et Unity affiche un avertissement. La désactivation de composants en collision peut ensuite retirer le binding partagé : les IDs doivent réellement être uniques.
Ce que vous devez avoir à la fin
- Les valeurs modifiables utilisent un setter qui applique leur effet.
- Les valeurs d'information sans setter sont clairement en lecture seule.
- Les IDs sont uniques dans toutes les scènes simultanément actives.
- Le testeur observe le clamp d'un
SETnumérique. - Votre conception ne dépend pas d'un
DELTAautomatique en 0.1.3.
Étape suivante : personnaliser l'interface générée.
Cette page vous a-t-elle aidé ?
Dernière mise à jour le