La documentation Pulse évolue : partagez votre avis en bas de chaque page.
SDK Unity 0.1.3 · stable

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.

  • Min et Max sont des float facultatifs.
  • Le clamp est appliqué aux variables int et float.
  • 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ère label.
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 :

  1. le contrôleur envoie SET avec un cid ;
  2. le SDK recherche la variable et convertit la valeur ;
  3. il applique le clamp pris en charge et appelle le setter ;
  4. 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.

CodeSignification
UNKNOWN_VARID absent ou composant désactivé
READ_ONLYpropriété sans setter
BAD_ARGSconversion 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 SET numérique.
  • Votre conception ne dépend pas d'un DELTA automatique 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

Sur cette page