Interactive, элемент [экспериментальный]

Упрощенная централизованная точка входа в систему ввода МРТК. Содержит методы управления состоянием, управление событиями и логику настройки состояния для основных состояний взаимодействия.

Интерактивный элемент — это экспериментальная функция, которая поддерживается в Unity 2019,3 и выше, так как она использует возможности, новые для Unity 2019,3: сериализация ссылки.

Интерактивный инспектор элементов

В режиме воспроизведения интерактивный инспектор элементов предоставляет визуальную обратную связь, которая указывает, является ли текущее состояние активным. Если состояние активно, оно будет выделено голубым цветом. Если состояние неактивно, цвет не изменяется. Номера, расположенные рядом с состояниями в инспекторе, являются значениями состояния, если состояние активно, а значение равно 1, если состояние неактивно, то это значение равно 0.

Interactive Element with virtual hand interaction

Основные состояния

Интерактивный элемент содержит основные состояния и поддерживает добавление пользовательских состояний. Основное состояние — это ядро, которое уже имеет логику настройки состояния, определенную в BaseInteractiveElement . Ниже приведен список текущих состояний ядра на основе ввода:

Текущие основные состояния

Основные состояния в ближайшем и дальнем взаимодействии:

Основные состояния взаимодействия:

Основные состояния взаимодействия:

Другие основные состояния:

Добавление основного состояния с помощью инспектора

  1. В инспекторе для интерактивного элемента перейдите к разделу Добавление основного состояния .

    Add a Core State via Inspector

  2. Нажмите кнопку выбрать состояние , чтобы выбрать основное состояние для добавления. Состояния в меню сортируются по типу взаимодействия.

    Add a Core State via Inspector with state selected

  3. Откройте свертывание конфигурации событий, чтобы просмотреть события и свойства, связанные с этим состоянием.

    Add a Core State via Inspector with event configuration

Добавление основного состояния с помощью скрипта

Используйте AddNewState(stateName) метод, чтобы добавить основное состояние. Чтобы получить список доступных имен основных состояний, используйте CoreInteractionState перечисление.

// Add by name or add by CoreInteractionState enum to string

interactiveElement.AddNewState("SelectFar");

interactiveElement.AddNewState(CoreInteractionState.SelectFar.ToString());

Внутренняя структура состояний

Состояния в интерактивном элементе имеют тип InteractionState . InteractionStateСодержит следующие свойства:

  • Имя: имя состояния.
  • Значение: значение состояния. Если состояние — ON, то значение состояния равно 1. Если состояние равно OFF, то значение состояния равно 0.
  • Активный: состояние сейчас активно. Значение активного свойства равно true, если состояние равно ON, и false, если состояние — OFF.
  • Тип взаимодействия: тип взаимодействия состояния — это тип взаимодействия, для которого предназначено состояние.
    • None: Не поддерживает ни одну форму взаимодействия с входными данными.
    • Near: Приближается поддержка взаимодействия. Входные данные считаются близкими к взаимодействию, когда у манипулятора руки есть прямое Контактное лицо с другим игровым объектом, т. е. в положении, что накрывающаяся рука близка к положению игрового объекта в мировом пространстве.
    • Far: Поддержка дальнего взаимодействия. Входные данные считаются намного взаимодействием, если прямое обращение к игровому объекту не требуется. Например, вход с помощью контроллера Ray или взгляда считается гораздо более безопасным входом.
    • NearAndFar: Включает поддержку практически и дальнего взаимодействия.
    • Other: Независимая поддержка взаимодействия по указателям.
  • Конфигурация события. Конфигурация события состояния — это точка входа в профиле сериализованных событий.

Все эти свойства задаются внутренне в элементе, State Manager содержащемся в интерактивном элементе. Для изменения состояний используйте следующие вспомогательные методы:

Вспомогательные методы настройки состояния

// Get the InteractionState
interactiveElement.GetState("StateName");

// Set a state value to 1/on
interactiveElement.SetStateOn("StateName");

// Set a state value to 0/off
interactiveElement.SetStateOff("StateName");

// Check if a state is present in the state list
interactiveElement.IsStatePresent("StateName");

// Check whether or not a state is active
interactiveElement.IsStateActive("StateName");

// Add a new state to the state list
interactiveElement.AddNewState("StateName");

// Remove a state from the state list
interactiveElement.RemoveState("StateName");

Получение конфигурации события состояния зависит от самого состояния. Каждое основное состояние имеет конкретный тип конфигурации событий, который описан ниже в разделах, описывающих каждое состояние ядра.

Ниже приведен обобщенный пример получения конфигурации события состояния.

// T varies depending on the core state - the specific T's are specified under each of the core state sections
T stateNameEvents = interactiveElement.GetStateEvents<T>("StateName");

Состояние по умолчанию

Состояние по умолчанию всегда имеется в интерактивном элементе. Это состояние будет активным, только если все остальные состояния неактивны. Если любое другое состояние становится активным, состояние по умолчанию будет отключено внутренним.

Интерактивный элемент инициализируется с состояниями по умолчанию и фокусом, присутствующими в списке состояний. Состояние по умолчанию всегда должно присутствовать в списке состояний.

Получение событий состояния по умолчанию

Тип конфигурации события для состояния по умолчанию: StateEvents

StateEvents defaultEvents = interactiveElement.GetStateEvents<StateEvents>("Default");

defaultEvents.OnStateOn.AddListener(() =>
{
    Debug.Log($"{gameObject.name} Default State On");
});

defaultEvents.OnStateOff.AddListener(() =>
{
    Debug.Log($"{gameObject.name} Default State Off");
});

Состояние фокусировки

Состояние фокусировки — это состояние почти и намного взаимодействий, которое можно рассматривать как эквивалентное наведении на смешанную реальность. Отличительным фактором между ближайшим и дальнеим взаимодействием для состояния фокуса является текущий активный тип указателя. Если тип указателя для состояния фокуса является указателем на Вставка, то взаимодействие считается практически взаимодействием. Если первичный указатель не является указателем на Вставка, взаимодействие считается далеко взаимодействием. По умолчанию состояние фокусировки представлено в интерактивном элементе.

Поведение состояния фокусаFocus state with virtual hand interaction

Инспектор состояния фокусаFocus state in the Inpsector

Получение событий состояния фокуса

Тип конфигурации события для состояния фокусировки: FocusEvents

FocusEvents focusEvents = interactiveElement.GetStateEvents<FocusEvents>("Focus");

focusEvents.OnFocusOn.AddListener((pointerEventData) =>
{
    Debug.Log($"{gameObject.name} Focus On");
});

focusEvents.OnFocusOff.AddListener((pointerEventData) =>
{
    Debug.Log($"{gameObject.name} Focus Off");
});

Основное внимание уделяется Практическиму поведению фокуса VS

Focus near and far with virtual hand interaction

Фокус рядом с состоянием

Фокус находится рядом с состоянием, когда возникает событие Focus, а первичный указатель — это указатель, указывающий на приближение взаимодействия.

Фокус на поведение близкого состоянияFocus near state with virtual hand interaction

Сфокусироваться рядом с инспектором состоянийFocus near component in the Inspector

Получение событий состояния Фокуснеар

Тип конфигурации события для состояния Фокуснеар: FocusEvents

FocusEvents focusNearEvents = interactiveElement.GetStateEvents<FocusEvents>("FocusNear");

focusNearEvents.OnFocusOn.AddListener((pointerEventData) =>
{
    Debug.Log($"{gameObject.name} Near Interaction Focus On");
});

focusNearEvents.OnFocusOff.AddListener((pointerEventData) =>
{
    Debug.Log($"{gameObject.name} Near Interaction Focus Off");
});

Фокус на далеком состоянии

Состояние "фокус находится далеко" устанавливается, когда основной указатель не является указателем на Вставка. Например, указатель по умолчанию на луч и указатель на ГГВ (взгляд, жест, голоса) рассматриваются как дальнее несколько указателей взаимодействия.

Поведение при наведении фокуса на состояниеFocus state far with virtual hand interaction

Инспектор состояния фокусаFocus far component in the Inspector

Получение событий состояния фокуса

Тип конфигурации события для состояния Фокусфар: FocusEvents

FocusEvents focusFarEvents = interactiveElement.GetStateEvents<FocusEvents>("FocusFar");

focusFarEvents.OnFocusOn.AddListener((pointerEventData) =>
{
    Debug.Log($"{gameObject.name} Far Interaction Focus On");
});

focusFarEvents.OnFocusOff.AddListener((pointerEventData) =>
{
    Debug.Log($"{gameObject.name} Far Interaction Focus Off");
});

Состояние касания

Сенсорный режим — это состояние близкого взаимодействия, которое задается, когда Наладонная рука обращается к объекту напрямую. Прямое касание означает, что палец указателя руки очень близко к всему миру объекта. По умолчанию NearInteractionTouchableVolume компонент прикрепляется к объекту, если в список состояний добавляется сенсорный режим. NearInteractionTouchableVolumeNearInteractionTouchable Для обнаружения событий касания требуется наличие компонента или. Разница между NearInteractionTouchableVolume и заключается в том NearInteractionTouchable , что NearInteractionTouchableVolume обнаруживает касание на основе конфликтующего объекта и NearInteractionTouchable обнаруживает касание в определенной области плоскости.

Поведение сенсорного состоянияTouch state with virtual hand interaction

Инспектор состояния касанияTouch state component in the Inspector

Получение событий состояния касания

Тип конфигурации событий для состояния касания: TouchEvents

TouchEvents touchEvents = interactiveElement.GetStateEvents<TouchEvents>("Touch");

touchEvents.OnTouchStarted.AddListener((touchData) =>
{
    Debug.Log($"{gameObject.name} Touch Started");
});

touchEvents.OnTouchCompleted.AddListener((touchData) =>
{
    Debug.Log($"{gameObject.name} Touch Completed");
});

touchEvents.OnTouchUpdated.AddListener((touchData) =>
{
    Debug.Log($"{gameObject.name} Touch Updated");
});

Выбор дальнего состояния

Область выбор дальнего состояния является полевой IMixedRealityPointerHandler . Это состояние является гораздо более взаимодействием, которое обнаруживает гораздо взаимодействие щелчком мыши (AIR-TAP) и удерживается с помощью дальнего указателя взаимодействия, такого как указатель на контроллер по умолчанию или указатель ГГВ. В поле Выбор дальнего состояния есть параметр под заголовком конфигурация события с именем Global . Если Global имеет значение true, то IMixedRealityPointerHandler регистрируется как глобальный обработчик входных данных. Фокус на объекте не требуется для активации входных системных событий, если обработчик зарегистрирован как глобальный. Например, если пользователь хочет, чтобы во время выполнения жеста воздушного касания/выбора захотелся, независимо от объекта в фокусе, установите значение Global true.

Выбор состояния дальнего действияSelect far with virtual hand interaction

Выбрать инспектор дальнего состоянияSelect far component in the Inspector

Получение событий выбора дальнего состояния

Тип конфигурации события для состояния Селектфар: SelectFarEvents

SelectFarEvents selectFarEvents = interactiveElement.GetStateEvents<SelectFarEvents>("SelectFar");

selectFarEvents.OnSelectUp.AddListener((pointerEventData) =>
{
    Debug.Log($"{gameObject.name} Far Interaction Pointer Up");
});

selectFarEvents.OnSelectDown.AddListener((pointerEventData) =>
{
    Debug.Log($"{gameObject.name} Far Interaction Pointer Down");
});

selectFarEvents.OnSelectHold.AddListener((pointerEventData) =>
{
    Debug.Log($"{gameObject.name} Far Interaction Pointer Hold");
});

selectFarEvents.OnSelectClicked.AddListener((pointerEventData) =>
{
    Debug.Log($"{gameObject.name} Far Interaction Pointer Clicked");
});

Выбранное состояние

Выбранное состояние активируется при дальнем взаимодействии по умолчанию (выбор дальнего состояния). Это состояние внутренне переключается в on, вызывает событие onclickd и сразу же переключается на OFF.

Примечание

Визуальная обратная связь в инспекторе, основанном на действии состояния, отсутствует для состояния щелчка, так как она переключается, а затем немедленно выключается.

Поведение при выборе состоянияClicked state with virtual hand interactions

Инспектор состояний нажатияClick state component in the Inspector

Пример состояния "почти и далеко"
Выбранное состояние можно активировать с помощью дополнительных точек входа с помощью interactiveElement.TriggerClickedState() метода. Например, если пользователю требуется близкое взаимодействие для активации щелчка на объекте, то он будет добавлять TriggerClickedState() метод в качестве прослушивателя в состоянии касания.

Near and far state with virtual hand interactions

Получение событий состояния щелчков

Тип конфигурации событий для состояния щелчка: ClickedEvents

ClickedEvents clickedEvent = interactiveElement.GetStateEvents<ClickedEvents>("Clicked");

clickedEvent.OnClicked.AddListener(() =>
{
    Debug.Log($"{gameObject.name} Clicked");
});

Включение и выключение состояния

Переключатели и выключенные состояния являются парой и должны быть представлены для поведений переключения. По умолчанию состояния переключателя и выключения запускаются с помощью дальнего щелчка (выберите дальнее состояние). По умолчанию состояние отключения включается при запуске, что означает, что переключатель будет инициализирован в OFF. Если пользователь хочет, чтобы состояние переключения было активным при запуске, в окне переключение в состояние установлено значение IsSelectedOnStart true.

Тогглеон и отключение поведения состоянияToggle on and off with virtual hand interactions

Тогглеон и переключение инспектора состоянийToggle component in the Inspector

Пример состояния переключателя NEAR и Far
Как и в случае щелчка состояния, параметр переключения состояния может иметь несколько точек входа с помощью interactiveElement.SetToggleStates() метода. Например, если пользователь хочет коснуться в качестве дополнительной точки входа для задания состояния переключения, они добавляют SetToggleStates() метод к одному из событий в состоянии касания.

Near and far toggle with virtual hand interactions

Получение или выключение событий состояния

Тип конфигурации события для состояния Тогглеон: ToggleOnEvents
Тип конфигурации события для состояния Тогглеофф: ToggleOffEvents

// Toggle On Events
ToggleOnEvents toggleOnEvent = interactiveElement.GetStateEvents<ToggleOnEvents>("ToggleOn");

toggleOnEvent.OnToggleOn.AddListener(() =>
{
    Debug.Log($"{gameObject.name} Toggled On");
});

// Toggle Off Events
ToggleOffEvents toggleOffEvent = interactiveElement.GetStateEvents<ToggleOffEvents>("ToggleOff");

toggleOffEvent.OnToggleOff.AddListener(() =>
{
    Debug.Log($"{gameObject.name} Toggled Off");
});

Состояние ключевого слова речи

Состояние ключевого слова речи прослушивает ключевые слова, определенные в профиле речи смешанной реальности. Все новые ключевые слова должны быть зарегистрированы в профиле голосовых команд до выполнения (шаги ниже).

Поведение состояния ключевого слова речиSpeech keyword with virtual interaction

Инспектор состояния ключевого слова речиSpeech keyword component in the Inspector

Примечание

Состояние ключевого слова речи было активировано в редакторе, нажав клавишу F5 в приведенном выше GIF. Настройка в редакторе тестирование распознавания речи описана ниже.

Как зарегистрировать голосовую команду или ключевое слово

  1. Выбор игрового объекта микседреалититулкит

  2. Выберите Копировать и настроить текущий профиль

  3. Перейдите к разделу вход и выберите клонировать , чтобы разрешить изменение входного профиля.

  4. Прокрутите вниз до раздела "речь" во входном профиле и клонировать профиль речи

    Speech keyword profile in the MRTK game object

  5. Выберите команду "добавить новую речь"

    Adding a new speech keyword in the MRTK profile

  6. Введите ключевое слово New. Необязательно. Измените значение KeyCode на F5 (или другой KeyCode), чтобы разрешить тестирование в редакторе.

    Configuring speech keyword in the MRTK profile

  7. Вернитесь к инспектору состояний ключевых слов интерактивного речевого элемента и выберите Добавить ключевое слово .

    Adding keyword to interactive element component

    Keyword validation and registration

  8. Введите новое ключевое слово, которое было только что зарегистрировано в профиле речи

    Entering new speech keyword

Чтобы проверить состояние ключевого слова речи в редакторе, нажмите кнопку KeyCode, которая была определена на шаге 6 (F5), чтобы имитировать событие распознавания ключевого слова Speech.

Получение событий состояния ключевого слова речи

Тип конфигурации события для состояния Спичкэйворд: SpeechKeywordEvents

SpeechKeywordEvents speechKeywordEvents = interactiveElement.GetStateEvents<SpeechKeywordEvents>("SpeechKeyword");

speechKeywordEvents.OnAnySpeechKeywordRecognized.AddListener((speechEventData) =>
{
    Debug.Log($"{speechEventData.Command.Keyword} recognized");
});

// Get the "Change" Keyword event specifically
KeywordEvent keywordEvent = speechKeywordEvents.Keywords.Find((keyword) => keyword.Keyword == "Change");

keywordEvent.OnKeywordRecognized.AddListener(() =>
{ 
    Debug.Log("Change Keyword Recognized"); 
});

Пользовательские состояния

Создание пользовательского состояния с помощью инспектора

Пользовательское состояние, созданное с помощью инспектора, будет инициализировано с конфигурацией событий состояния по умолчанию. Конфигурация событий по умолчанию для пользовательского состояния имеет тип StateEvents и содержит события онстатеон и онстатеофф.

  1. Перейдите к разделу Создание настраиваемого состояния в инспекторе для интерактивного элемента.

    Creating a custom state

  2. Введите имя нового состояния. Это имя должно быть уникальным и не может совпадать с существующими основными состояниями.

    Entering the name of a new custom state

  3. Выберите задать имя состояния , чтобы добавить его в список состояний.

    Add custom state to state list

    Это пользовательское состояние инициализируется с StateEvents конфигурацией событий по умолчанию, которая содержит OnStateOnOnStateOff события и. Сведения о создании конфигурации настраиваемого события для нового состояния см. в статье Создание пользовательского состояния с настраиваемой конфигурацией событий.

    New state shown in the interactive element component

Создание пользовательского состояния с помощью скрипта

interactiveElement.AddNewState("MyNewState");

// A new state by default is initialized with a the default StateEvents configuration which contains the 
// OnStateOn and OnStateOff events

StateEvents myNewStateEvents = interactiveElement.GetStateEvents<StateEvents>("MyNewState");

myNewStateEvents.OnStateOn.AddListener(() =>
{
    Debug.Log($"MyNewState is On");
});

Создание пользовательского состояния с настраиваемой конфигурацией событий

Примеры файлов для пользовательского состояния с именем Keyboard находятся здесь: мртк\сдк\експериментал\интерактивилемент\ексамплес\скриптс\кустомстатиксампле.

В следующих шагах рассматривается существующий пример создания пользовательской конфигурации события состояния и файлов получателей.

  1. Представьте имя состояния. Это имя должно быть уникальным и не может совпадать с существующими основными состояниями. В этом примере имя состояния будет иметь значение Клавиатура.

  2. Создайте два файла CS с именем State + "получатель" и именем состояния + "события". Имена этих файлов учитываются во внутреннем процессе и должны соответствовать соглашению о названии состояния + события/получателя.

    Keyboard state scripts

  3. Дополнительные сведения о содержимом файлов см. в файлах Кэйбоардевентс. cs и Кэйбоардрецеивер. cs. Новые классы конфигурации событий должны наследовать от BaseInteractionEventConfiguration , а новые классы приемников событий должны наследоваться от BaseEventReceiver . Примеры параметров состояния для состояния клавиатуры находятся в CustomStateSettingExample.cs файле.

  4. Добавление состояния в интерактивный элемент с помощью имени состояния имя состояния будет распознано, если существуют файлы конфигурации событий и приемника событий. Свойства в файле конфигурации пользовательского события должны отображаться в инспекторе.

    Adding custom state to interactive elementCustom state recognized in the interactive element

  5. Дополнительные примеры файлов конфигурации событий и приемников событий см. в файлах по следующим путям:

  • мртк\сдк\експериментал\интерактивилемент\интерактивилемент\евентс\евентконфигуратионс
  • мртк\сдк\експериментал\интерактивилемент\интерактивилемент\евентс\евентрецеиверс

Пример сцены

Пример сцены для визуализатора интерактивного элемента и состояния расположен здесь: Мртк\сдк\експериментал\интерактивилемент\ексамплес\интерактивилементексамплесцене.Унити

Example scene with Interactive Element and State Visualizer

Сжатая кнопка

Пример сцены содержит Prefabs с именем CompressableButton и CompressableButtonToggle , эти Prefabs зеркально отражают поведение PressableButtonHoloLens2 кнопок, созданных с помощью интерактивного элемента и визуализатора состояния. В CompressableButton настоящее время компонент является сочетанием PressableButton + PressableButtonHoloLens2 с BaseInteractiveElement базовым классом.

Визуализатор состояния [экспериментальный]

Компонент визуализатора состояния добавляет анимацию в объект на основе состояний, определенных в связанном компоненте интерактивного элемента. Этот компонент создает ресурсы анимации, помещает их в папку Микседреалититулкит. Generated и включает упрощенную настройку опорного кадра анимации путем добавления свойств анимации к целевому объекту игры. Чтобы включить переходы анимации между состояниями, создается ресурс контроллера аниматор и создается конечный автомат по умолчанию со связанными параметрами и любыми переходами состояния. Конечный автомат можно просмотреть в окне аниматор Unity.

Визуализатор состояния и система анимации Unity

В настоящее время визуализатор состояния использует систему анимации Unity.

При нажатии кнопки создать новые фрагменты анимации в визуализаторе состояния создаются новые материалы анимации на основе имен состояний в интерактивном элементе и помещаются в папку Микседреалититулкит. Generated. Свойство фрагмента анимации в каждом контейнере состояния устанавливается в соответствующий анимированный ролик.

Animation clips in state visualizer component

Кроме того, для управления плавными переходами между фрагментами анимации также создается конечный автомат аниматор . По умолчанию конечный автомат использует любое состояние , чтобы разрешить переходы между любым состоянием в интерактивном элементе.

Визуализаторы состояний, активируемые в аниматор , также формируются для каждого состояния. параметры триггера используются в визуализаторе состояний для запуска анимации.

Unity state machine

Ограничения среды выполнения

Визуализатор состояния должен быть добавлен в объект через инспектор и не может быть добавлен с помощью скрипта. Свойства, изменяющие Аниматорстатемачине/Аниматионконтроллер, содержатся в пространстве имен редактора ( UnityEditor.Animations ), которое удаляется при сборке приложения.

Использование визуализатора состояния

  1. Создание куба

  2. Присоединить интерактивный элемент

  3. Присоединить визуализатор состояний

  4. Выберите создать новые анимационные клипы

    Generating new animation clips

    Showing generated animation clips in visualizer and interactive element components

  5. В контейнере состояние фокуса выберите добавить целевой объект .

    Adding state visualizer target

  6. Перетащите текущий объект Game в целевое поле

    Setting state visualizer target

  7. Открытие свертывания свойств куба

  8. Выберите раскрывающееся меню анимированное свойство и выберите Цвет .

    Setting state visualizer color

  9. Выберите Добавить свойство для анимации цвета .

    Selecting the visualizer color animatable property

  10. Выбор цвета

    Choosing a visualizer color from color wheel

  11. Нажмите кнопку Воспроизведение и обратите внимание на изменение переходного цвета.

    Transitional color change example with virtual hand interaction

Свойства с анимацией

Основным назначением свойств, которые можно анимировать, является упрощение настройки опорного кадра анимации. если пользователь знаком с системой анимации Unity и предпочитает непосредственно задавать опорные кадры на созданных роликах анимации, они могут просто не добавлять анимированные свойства в целевой объект и открывать клип в окне анимации Unity (Windows анимации анимации >> ).

Если для анимации используются анимированные свойства, для типа кривой устанавливается значение Еасеинаут.

Текущие свойства для анимации:

Смещение шкалы

Свойство с анимацией смещения шкалы принимает текущий масштаб объекта и добавляет заданное смещение.

Scale offset with virtual hand interaction

Смещение позиции

Свойство "смещение позиции", которое используется для анимации, принимает текущую позиции объекта и добавляет заданное смещение.

Position offset with virtual hand interaction

Цвет

Свойство "анимация цвета" представляет основной цвет материала, если материал имеет свойство основного цвета. Это свойство анимирует material._Color свойство.

Focus color change with virtual hand interaction

Цвет шейдера

Свойство анимированного цвета шейдера ссылается на свойство шейдера типа Color. Имя свойства является обязательным для всех свойств шейдера. Приведенный ниже GIF-файл демонстрирует анимацию свойства цвета шейдера с именем Fill_Color, который не является основным цветом материала. Изучите изменяющиеся значения в инспекторе материалов.

Shade color with virtual hand interaction

Построитель текстуры с плавающей запятой

Анимированное свойство Shader с плавающей запятой ссылается на свойство шейдера типа float. Имя свойства является обязательным для всех свойств шейдера. В приведенном ниже GIF-файле Обратите внимание на изменение значений в инспекторе материалов для свойства «металл».

Shader float with virtual hand interaction

Вектор шейдера

Анимированное свойство вектора шейдера ссылается на свойство шейдера типа Vector4. Имя свойства является обязательным для всех свойств шейдера. В приведенном ниже GIF-файле Обратите внимание на изменение значений в инспекторе материалов для свойства мозаичного заполнения (главное Tex_ST).

Shader vector with virtual hand interaction

Как найти имена свойств анимированного шейдера

  1. Переход > к окну анимации анимации >

  2. Убедитесь, что в иерархии выбран объект с визуализатором состояния.

  3. Выбор любого клипа анимации в окне "анимация"

  4. Выберите Добавить свойство, откройте свертывание модуля подготовки сетки.

    Adding animation property in the Animator window

  5. Этот список содержит имена всех свойств анимации.

    Mesh renderer animation properties in the Animator window

См. также