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

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

Интерактивный элемент — это экспериментальная функция, поддерживаемая в Unity 2019.3 и более поздней версии, так как она использует новую возможность для Unity 2019.3: serialize Reference.

Interactive Element Inspector

В режиме воспроизведения инспектор интерактивных элементов предоставляет визуальную обратную связь, указывающую, активно ли текущее состояние. Если состояние активно, оно будет выделено цветом циана. Если состояние неактивно, цвет не изменяется. Числа рядом с состояниями в инспекторе являются значениями состояния, если состояние активно, то значение равно 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 следующие свойства:

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

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

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

// 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");
});

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

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

Поведение состояния фокуса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");
});

Фокус рядом с фокусом и поведение фокуса

Focus near and far with virtual hand interaction

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

Состояние «Фокус рядом» задается, когда возникает событие фокуса, а основным указателем является указатель Poke, указывающий на близкое взаимодействие.

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

Фокус рядом с государственным инспекторомFocus near component in the Inspector

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

Тип конфигурации события для состояния FocusNear: 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");
});

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

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

Поведение дальней фокусировкиFocus state far with virtual hand interaction

Focus Far State InspectorFocus far component in the Inspector

Получение событий с фокусом в состоянии "Фокус"

Тип конфигурации события для состояния FocusFar: 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 если состояние Touch добавляется в список состояний. Для обнаружения событий Touch требуется наличие или 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");
});

Выбор состояния "Далеко"

Состояние Select Far отображается IMixedRealityPointerHandler . Это состояние является состоянием удаленного взаимодействия, которое обнаруживает дальнее взаимодействие щелчком (касанием воздуха) и удерживает с помощью указателей дальнего взаимодействия, таких как указатель луча контроллера по умолчанию или указатель GGV. Состояние Select Far имеет параметр в свертывание конфигурации события с именем Global. Если Global значение равно true, IMixedRealityPointerHandler то он регистрируется в качестве глобального обработчика входных данных. Фокус на объекте не требуется для активации входных системных событий, если обработчик зарегистрирован как глобальный. Например, если пользователь хочет узнать, когда жест касания или выбора воздуха выполняется независимо от объекта в фокусе, задайте Global значение true.

Выбор режима "Далекое состояние"Select far with virtual hand interaction

Выбор far State InspectorSelect far component in the Inspector

Получение событий far state

Тип конфигурации события для состояния SelectFar: 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");
});

Состояние щелчка

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

Примечание

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

Поведение состояния щелчкаClicked state with virtual hand interactions

Щелкните "Инспектор состояния"Click state component in the Inspector

Near and Far Clicked State Example
Состояние щелчка можно активировать с помощью дополнительных точек входа с помощью 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");
});

Переключатель "Вкл." и "Отключить"

Переключатель "Вкл." и "Выключить" — это пара, и оба должны присутствовать для режима переключения. По умолчанию переключатель "Вкл. и переключатель выключения" активируются путем нажатия кнопки удаленного взаимодействия (выбрать состояние "Далеко"). По умолчанию переключатель "Выкл. Выключение" активно при запуске, то есть переключатель будет инициализирован для выключения. Если пользователь хочет, чтобы состояние toggle On было активным при запуске, в параметре toggle On state set IsSelectedOnStart to true.

Режим переключения и выключения состоянияToggle on and off with virtual hand interactions

ToggleOn and Toggle Off State InspectorToggle component in the Inspector

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

Near and far toggle with virtual hand interactions

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

Тип конфигурации события для состояния ToggleOn: ToggleOnEvents
Тип конфигурации события для состояния ToggleOff: 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. Выбор объекта игры MixedRealityToolkit

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

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

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

    Speech keyword profile in the MRTK game object

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

    Adding a new speech keyword in the MRTK profile

  6. Введите новое ключевое слово. Необязательно. Измените 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), чтобы имитировать событие распознавания ключевого слова речи.

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

Тип конфигурации события для состояния SpeechKeyword: 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 и содержит события OnStateOn и OnStateOff.

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

    Creating a custom state

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

    Entering the name of a new custom state

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

    Add custom state to state list

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

    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 находятся здесь: MRTK\SDK\Experimental\InteractiveElement\Examples\Scripts\CustomStateExample

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

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

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

    Keyboard state scripts

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

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

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

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

  • MRTK\SDK\Experimental\InteractiveElement\InteractiveElement\Events\EventConfigurations
  • MRTK\SDK\Experimental\InteractiveElement\InteractiveElement\Events\EventReceivers

Пример сцены

Пример сцены для интерактивного элемента и визуализатора состояния находится здесь: MRTK\SDK\Experimental\InteractiveElement\Examples\InteractiveElementExampleScene.unity

Example scene with Interactive Element and State Visualizer

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

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

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

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

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

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

При нажатии кнопки "Создать новые клипы анимации " в визуализаторе состояния создаются новые ресурсы клипов анимации на основе имен состояний в интерактивном элементе и помещаются в папку MixedRealityToolkit.Generateed. Для свойства анимации Clip в каждом контейнере состояния задается связанный клип анимации.

Animation clips in state visualizer component

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

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

Unity state machine

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

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

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

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

  2. Элемент Attach Interactive

  3. Визуализатор состояния присоединения

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

    Generating new animation clips

    Showing generated animation clips in visualizer and interactive element components

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

    Adding state visualizer target

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

    Setting state visualizer target

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

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

    Setting state visualizer color

  9. Выберите "Добавить свойство цвета Animatable"

    Selecting the visualizer color animatable property

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

    Choosing a visualizer color from color wheel

  11. Нажимайте воспроизведение и наблюдайте за переходным изменением цвета

    Transitional color change example with virtual hand interaction

Анимируемые свойства

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

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

Текущие анимируемые свойства:

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

Свойство Animatable scale Offset принимает текущий масштаб объекта и добавляет определенное смещение.

Scale offset with virtual hand interaction

Смещение положения

Свойство Position Offset Animatable принимает текущее положение объекта и добавляет определенное смещение.

Position offset with virtual hand interaction

Color

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

Focus color change with virtual hand interaction

Цвет шейдера

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

Shade color with virtual hand interaction

Шейдер с плавающей запятой

Свойство Float Animatable шейдера относится к свойству шейдера типа float. Имя свойства требуется для всех свойств шейдера. В приведенном ниже gif-файле просмотрите изменяющиеся значения в инспекторе материалов для свойства Metallic.

Shader float with virtual hand interaction

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

Свойство Animatable вектора шейдера ссылается на свойство шейдера типа Vector4. Имя свойства требуется для всех свойств шейдера. В приведенном ниже gif-файле просмотрите изменяющиеся значения в инспекторе материалов для свойства Tiling (Main Tex_ST).

Shader vector with virtual hand interaction

Поиск имен свойств шейдера с анимацией

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

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

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

  4. Выберите "Добавить свойство", откройте свертывание отрисовщика Mesh

    Adding animation property in the Animator window

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

    Mesh renderer animation properties in the Animator window

См. также