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

Exposer des actions

Déclarer des commandes Pulse, leurs paramètres et leurs enums sans fragiliser le contrat.

Objectif

Transformer des méthodes d'instance en commandes validées et appelables depuis Pulse Control.

Action sans paramètre

La méthode doit appartenir à un PulseBehaviour, retourner void et porter un ID unique :

using PulseSDK.Attributes;
using PulseSDK.Core;
using UnityEngine;

public sealed class ExperienceControls : PulseBehaviour
{
    [PulseAction("experience.restart")]
    public void RestartExperience()
    {
        Debug.Log("Restart requested");
    }
}

La visibilité n'est pas imposée : une méthode privée peut être découverte. Préférez toutefois des méthodes publiques ou privées clairement dédiées à Pulse, sans surcharge ambiguë.

Paramètres acceptés

Le SDK convertit les arguments JSON vers :

  • int, float, double ;
  • bool ;
  • string ;
  • toute enum.
public enum PlaybackMode
{
    Guided = 10,
    Free = 20,
    Kiosk = 30
}

public sealed class PlaybackControls : PulseBehaviour
{
    [PulseAction("playback.start")]
    public void StartPlayback(PlaybackMode mode, float fadeSeconds, bool loop)
    {
        // Validez ici les règles métier qui dépassent la conversion de type.
    }
}

Le schéma décrit chaque paramètre dans l'ordre de la signature. Pour une enum, il publie les noms dans options, leurs valeurs entières stables dans values, et indique si [Flags] est présent.

Le contrôleur doit envoyer la valeur entière de l'enum. Le SDK tolère aussi son nom textuel, mais la valeur numérique constitue le contrat le plus stable.

Enum à drapeaux

[System.Flags]
public enum OutputChannels
{
    None = 0,
    Headset = 1,
    Spectator = 2,
    Recorder = 4
}

[PulseAction("output.enable")]
public void EnableOutputs(OutputChannels channels) { }

Utilisez des puissances de deux. Une combinaison comme Headset | Recorder vaut 5.

Règles de conception

  • Utilisez une notation pointée, en minuscules : domaine.verbe.
  • Ne dérivez jamais l'ID du nom C# ; un renommage ne doit pas casser Pulse Control.
  • Rendez les IDs uniques dans toute l'application, pas seulement dans une classe.
  • Gardez les actions courtes ; lancez une coroutine interne si le travail dure.
  • Retournez void. Les méthodes Task, statiques ou génériques ne sont pas prises en charge.
  • Validez les plages et préconditions métier dans la méthode.

Réponses et erreurs

À réception d'un CMD, le client recherche l'ID, convertit les arguments et invoque la méthode. Il renvoie un ACK :

CodeCause typique
UNKNOWN_ACTIONID absent ou composant désactivé
BAD_ARGSargument manquant ou conversion impossible
INTERNALexception pendant l'invocation

Les arguments supplémentaires sont ignorés par la version 0.1.3 ; ne vous appuyez pas sur ce comportement pour versionner une API.

Héritage et cycle de vie

Les attributs sont hérités. OnEnable enregistre les bindings et OnDisable les retire. Si vous surchargez ces méthodes, appelez impérativement base.OnEnable() et base.OnDisable().

Ce que vous devez avoir à la fin

  • Chaque méthode Pulse retourne void et possède un ID globalement unique.
  • Chaque paramètre utilise un type pris en charge.
  • Les valeurs numériques des enums sont explicites et stables.
  • Le testeur obtient un ACK positif avec des arguments valides.
  • Les IDs inconnus et mauvais arguments produisent les codes attendus.

Étape suivante : exposer des variables.

Cette page vous a-t-elle aidé ?

Dernière mise à jour le

Sur cette page