OpenXRActionSet
Именованный набор ресурсов действий с приоритетом.
OpenXRActionSet группирует действия, например gameplay или menu. ResourceName — внутреннее имя, LocalizedName — подпись, Priority — приоритет конфликтов активных наборов. Новый набор пуст, с пустой подписью и Priority=0. Эти ресурсы описывают будущий runtime-набор; изменение Priority не переключает его активность.
Одно действие принадлежит одному набору. AddAction переносит ресурс из прежнего набора; повтор того же ресурса игнорируется. Для независимых действий создавайте разные экземпляры. Уникальность внутренних имён и подписей проверяйте отдельно.
Actions/GetActions возвращает общий Array. Не вызывайте Clear() и не присваивайте его обратно напрямую: это обходит обслуживание связей либо очищает список. Для замены скопируйте контейнер через Duplicate(), отредактируйте его и передайте SetActions. Ресурсы в копии остаются общими.
SetLocalizedName и SetPriority испускают Changed даже при том же значении. SetActions очищает связи и повторно добавляет действия, поэтому не обещает ровно один сигнал. RemoveAction удаляет ресурс из набора, но не чистит за вас ссылки binding в профилях.
Начальные значения, события, идентичность, самоприсваивание и безопасная замена контейнера проверены в установленном движке без XR-сеанса. Работа приоритетов на гарнитуре и переключение runtime-наборов не проверялись. Полный пример: карта действий.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
OpenXRActionSetКонструктор
public OpenXRActionSet();Создаёт пустой набор с Priority=0 и пустой LocalizedName. Задайте ResourceName и подпись, добавьте действия и поместите набор в карту до запуска сеанса.
Свойства3
ActionsСвойство
public Reckfell.Collections.Array Actions { get; set; }Ресурсы действий набора. Getter возвращает общий Array. Setter снимает старое владение и заново вызывает AddAction; повтор одного ресурса не добавляется. Самоприсваивание общего массива очищает список. Перед заменой используйте Duplicate() контейнера. Прямые изменения возвращённого Array обходят обслуживание связей и Changed; предпочтительны AddAction/RemoveAction.
LocalizedNameСвойство
public string LocalizedName { get; set; }Человекочитаемая подпись, изначально пустая. Внутренний ключ хранится отдельно в ResourceName. Setter сохраняет строку и испускает Changed даже при повторе; сам не выполняет полную проверку требований OpenXR. Перед подключением к сеансу задайте непустую уникальную подпись в нужной области имён. Изменение ресурса не переименовывает уже созданный runtime action/set.
PriorityСвойство
public int Priority { get; set; }Приоритет набора при разрешении конфликтов активных наборов, изначально 0. Setter сохраняет int без проверки и испускает Changed даже при повторе; используйте неотрицательные значения. Не включает набор и не меняет активность сеанса. Значение передаётся при создании runtime-набора, поэтому изменение ресурса не перестраивает подключённый сеанс.
Методы9
AddActionvoid
public void AddAction(OpenXRAction action);Добавляет ненулевое действие и испускает Changed; повтор того же ресурса игнорируется. Если действие принадлежало другому набору, оно удаляется оттуда. Для независимых действий в двух наборах создайте разные ресурсы. Имена и подписи не проверяются на уникальность этим методом.
| Имя | Тип | По умолчанию |
|---|---|---|
action | OpenXRAction | — |
actionНенулевой OpenXRAction. Добавление переносит его из другого набора; удаление касается именно этого ресурса.
GetActionCountint
public int GetActionCount();Число ресурсов действий в наборе. Не число нажатий, доступных устройств или активных runtime-действий.
intЧисло ресурсов действий в наборе, изначально 0.
GetActionsReckfell.Collections.Array
public Reckfell.Collections.Array GetActions();Ресурсы действий набора. Getter возвращает общий Array. Setter снимает старое владение и заново вызывает AddAction; повтор одного ресурса не добавляется. Самоприсваивание общего массива очищает список. Перед заменой используйте Duplicate() контейнера. Прямые изменения возвращённого Array обходят обслуживание связей и Changed; предпочтительны AddAction/RemoveAction.
Reckfell.Collections.ArrayОбщий Array действий; используйте методы набора для сохранения связей владения.
GetLocalizedNamestring
public string GetLocalizedName();Сохранённая человекочитаемая подпись. Внутреннее имя набора читается из ResourceName.
stringСохранённая подпись, изначально пустая; не ResourceName.
GetPriorityint
public int GetPriority();Сохранённый приоритет ресурса, изначально 0. Не подтверждает применение значения уже подключённым runtime.
intСохранённый int приоритета ресурса, изначально 0.
RemoveActionvoid
public void RemoveAction(OpenXRAction action);Удаляет указанное действие, сбрасывает его связь с этим набором и испускает Changed, если оно присутствовало. Отсутствующее действие не меняет набор. Не удаляет привязки профиля и не перестраивает XR-сеанс автоматически.
| Имя | Тип | По умолчанию |
|---|---|---|
action | OpenXRAction | — |
actionНенулевой OpenXRAction. Добавление переносит его из другого набора; удаление касается именно этого ресурса.
SetActionsvoid
public void SetActions(Reckfell.Collections.Array actions);Ресурсы действий набора. Getter возвращает общий Array. Setter снимает старое владение и заново вызывает AddAction; повтор одного ресурса не добавляется. Самоприсваивание общего массива очищает список. Перед заменой используйте Duplicate() контейнера. Прямые изменения возвращённого Array обходят обслуживание связей и Changed; предпочтительны AddAction/RemoveAction.
| Имя | Тип | По умолчанию |
|---|---|---|
actions | Reckfell.Collections.Array | — |
actionsОтдельный Array ненулевых OpenXRAction; используйте Duplicate(), если заменяете список данными собственного getter.
SetLocalizedNamevoid
public void SetLocalizedName(string localizedName);Человекочитаемая подпись, изначально пустая. Внутренний ключ хранится отдельно в ResourceName. Setter сохраняет строку и испускает Changed даже при повторе; сам не выполняет полную проверку требований OpenXR. Перед подключением к сеансу задайте непустую уникальную подпись в нужной области имён. Изменение ресурса не переименовывает уже созданный runtime action/set.
| Имя | Тип | По умолчанию |
|---|---|---|
localizedName | string | — |
localizedNameНепустая человекочитаемая подпись для подготовленной карты. Не внутреннее имя и не автоматический перевод; задавайте текст нужного языка.
SetPriorityvoid
public void SetPriority(int priority);Приоритет набора при разрешении конфликтов активных наборов, изначально 0. Setter сохраняет int без проверки и испускает Changed даже при повторе; используйте неотрицательные значения. Не включает набор и не меняет активность сеанса. Значение передаётся при создании runtime-набора, поэтому изменение ресурса не перестраивает подключённый сеанс.
| Имя | Тип | По умолчанию |
|---|---|---|
priority | int | — |
priorityНеотрицательный приоритет для будущего создания runtime-набора. Setter сам не проверяет диапазон.