OpenXRAction
Имя, тип и устройства одного действия OpenXR.
OpenXRAction описывает действие, например select или move, а не текущее нажатие. ResourceName — внутренний ключ; LocalizedName — подпись. Новый ресурс имеет ActionType=Float, пустые подпись и ToplevelPaths. Подготовьте параметры, добавьте ресурс в набор и свяжите его с отдельными BindingPath профиля.
ToplevelPaths содержит пути устройств, например /user/hand/left и /user/hand/right. Это не пути кнопок. Для одной логической команды обеих рук используется один ресурс действия и две привязки. C# string[] здесь копируется: изменение входного массива или getter-результата не меняет ресурс. Для обновления назначьте массив обратно. Перегрузка ReadOnlySpan также копирует данные в native-ресурс.
Именованные типы текущего SDK: Bool, Float, Vector2, Pose. В native-коде и редакторе есть Haptic, но именованного ActionTypeEnum.Haptic в установленном SDK нет. Не используйте несуществующий член или числовую подстановку.
Все три setter испускают Changed даже при повторе значения. Это сигнал редактирования ресурса, а не событие ввода. Изменение ресурса не перестраивает действие подключённого XR-сеанса. Добавление одного экземпляра во второй набор переносит его из первого.
Проверены начальные значения, setter, события, обе перегрузки путей, копирование и сохранение карты с привязками в текущем runtime. Получение ввода от устройства, pose tracking, haptics и runtime-валидация путей не проверялись. Полный пример и диагностика: карта действий.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
OpenXRActionКонструктор
public OpenXRAction();Создаёт действие типа Float с пустыми LocalizedName и ToplevelPaths. Назначьте ResourceName, подпись, нужный тип и устройства, затем добавьте действие в набор.
Свойства3
ActionTypeСвойство
public OpenXRAction.ActionTypeEnum ActionType { get; set; }Тип значения действия, изначально Float. Именованные значения текущего C# SDK: Bool, Float, Vector2, Pose. Native-код и редактор также имеют Haptic, но именованный член Haptic в этом SDK отсутствует. Setter испускает Changed даже при повторе и не меняет тип уже созданного runtime-действия. Не используйте числовой cast как замену отсутствующему API.
LocalizedNameСвойство
public string LocalizedName { get; set; }Человекочитаемая подпись, изначально пустая. Внутренний ключ хранится отдельно в ResourceName. Setter сохраняет строку и испускает Changed даже при повторе; сам не выполняет полную проверку требований OpenXR. Перед подключением к сеансу задайте непустую уникальную подпись в нужной области имён. Изменение ресурса не переименовывает уже созданный runtime action/set.
ToplevelPathsСвойство
public string[] ToplevelPaths { get; set; }Top-level пути устройств для действия, изначально пустой массив; например /user/hand/left и /user/hand/right. Это не полные пути кнопок и не имена tracker left_hand/right_hand. C# массив копируется при передаче и чтении; ReadOnlySpan также передаёт копию native-данных. Setter испускает Changed даже при повторе. Проверку допустимости путей выполняйте до подключения; сохранение ресурса не подтверждает поддержку runtime.
Методы7
GetActionTypeOpenXRAction.ActionTypeEnum
public OpenXRAction.ActionTypeEnum GetActionType();Текущий тип ресурса, изначально Float. Это тип значения действия, не тип контроллера или текущий ввод.
OpenXRAction.ActionTypeEnumТекущий тип действия; новый ресурс возвращает Float.
GetLocalizedNamestring
public string GetLocalizedName();Сохранённая человекочитаемая подпись действия. Для опроса используйте внутренний ResourceName, а не эту строку.
stringСохранённая подпись, изначально пустая; не ResourceName.
GetToplevelPathsstring[]
public string[] GetToplevelPaths();Независимая C# копия сохранённых top-level путей устройств. Изменение результата не меняет ресурс: назначьте изменённый массив через ToplevelPaths/SetToplevelPaths.
string[]Независимый string[] top-level путей устройств; новый ресурс возвращает пустой массив.
SetActionTypevoid
public void SetActionType(OpenXRAction.ActionTypeEnum actionType);Тип значения действия, изначально Float. Именованные значения текущего C# SDK: Bool, Float, Vector2, Pose. Native-код и редактор также имеют Haptic, но именованный член Haptic в этом SDK отсутствует. Setter испускает Changed даже при повторе и не меняет тип уже созданного runtime-действия. Не используйте числовой cast как замену отсутствующему API.
| Имя | Тип | По умолчанию |
|---|---|---|
actionType | OpenXRAction.ActionTypeEnum | — |
actionTypeОдин из именованных типов SDK: Bool, Float, Vector2 или Pose. Не меняет существующий runtime action.
SetLocalizedNamevoid
public void SetLocalizedName(string localizedName);Человекочитаемая подпись, изначально пустая. Внутренний ключ хранится отдельно в ResourceName. Setter сохраняет строку и испускает Changed даже при повторе; сам не выполняет полную проверку требований OpenXR. Перед подключением к сеансу задайте непустую уникальную подпись в нужной области имён. Изменение ресурса не переименовывает уже созданный runtime action/set.
| Имя | Тип | По умолчанию |
|---|---|---|
localizedName | string | — |
localizedNameНепустая человекочитаемая подпись для подготовленной карты. Не внутреннее имя и не автоматический перевод; задавайте текст нужного языка.
SetToplevelPaths2 перегрузки
public void SetToplevelPaths(ReadOnlySpan<string> toplevelPaths);Top-level пути устройств для действия, изначально пустой массив; например /user/hand/left и /user/hand/right. Это не полные пути кнопок и не имена tracker left_hand/right_hand. C# массив копируется при передаче и чтении; ReadOnlySpan также передаёт копию native-данных. Setter испускает Changed даже при повторе. Проверку допустимости путей выполняйте до подключения; сохранение ресурса не подтверждает поддержку runtime.
| Имя | Тип | По умолчанию |
|---|---|---|
toplevelPaths | ReadOnlySpan<string> | — |
toplevelPathsПути устройств, например /user/hand/left и /user/hand/right. Не полные пути кнопок; данные копируются в ресурс.
public void SetToplevelPaths(string[] toplevelPaths);Top-level пути устройств для действия, изначально пустой массив; например /user/hand/left и /user/hand/right. Это не полные пути кнопок и не имена tracker left_hand/right_hand. C# массив копируется при передаче и чтении; ReadOnlySpan также передаёт копию native-данных. Setter испускает Changed даже при повторе. Проверку допустимости путей выполняйте до подключения; сохранение ресурса не подтверждает поддержку runtime.
| Имя | Тип | По умолчанию |
|---|---|---|
toplevelPaths | string[] | — |
toplevelPathsПути устройств, например /user/hand/left и /user/hand/right. Не полные пути кнопок; данные копируются в ресурс.
OpenXRAction.ActionTypeEnum
| Значение | Описание |
|---|---|
Bool = 0 | Это действие возвращает логическое значение. Открой XR_ACT_FLOAT |
Float = 1 | Эта мера предусматривает следующее: float значение между |
Pose = 3 | |
Vector2 = 2 | Это действие предоставляет значение Открой XR_Актус |