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éthodesTask, 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 :
| Code | Cause typique |
|---|---|
UNKNOWN_ACTION | ID absent ou composant désactivé |
BAD_ARGS | argument manquant ou conversion impossible |
INTERNAL | exception 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
voidet 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