Etkileşimli Öğe [Deneysel]

MRTK giriş sistemine basitleştirilmiş bir merkezi giriş noktası. Çekirdek Etkileşim Durumları için durum yönetimi yöntemlerini, olay yönetimini ve durum ayarı mantığını içerir.

Interactive Element, Unity 2019.3'te ve Unity 2019.3'te yeni bir özellik kullanılırken desteklenen deneysel bir özelliktir: Başvuru serileştirme.

Etkileşimli Öğe Denetçisi

Etkileşimli Öğe denetçisi, oynatma modu sırasında geçerli durumun etkin olup olmadığını belirten görsel geri bildirim sağlar. Bir durum etkinse, siyan rengiyle vurgulanır. Durum etkin durumda değilse renk değişmez. Denetçide durumların yanındaki sayılar durum değerleridir; durum etkinse değer 1, durum etkin değil ise değer 0'dır.

Sanal el etkileşimi ile Etkileşimli Öğe

Temel Eyaletler

Etkileşimli Öğe, temel durumları içerir ve özel durumların eksini destekler. Çekirdek durum, içinde tanımlanan durum ayarı mantığına sahip olan bir BaseInteractiveElement durumdur. Aşağıda, geçerli giriş odaklı çekirdek durumlarının bir listesi ve ardından yer almaktadır:

Geçerli Çekirdek Eyaletler

Yakın ve Uzak Etkileşim Çekirdek Durumları:

Yakın Etkileşim Çekirdek Durumları:

Uzak Etkileşim Çekirdek Durumları:

Diğer Temel Eyaletler:

Denetçi aracılığıyla Çekirdek Durum Ekleme

  1. Etkileşimli Öğe denetçisinde Çekirdek Durumu Ekle'ye gidin.

    Denetçi aracılığıyla Çekirdek Durum Ekleme

  2. Eklemek istediğiniz çekirdek durumu seçmek için Durumu Seç düğmesini seçin. Menüdeki eyaletler etkileşim türüne göre sıralanmış.

    Durum seçili durumdayken Denetçi aracılığıyla Çekirdek Durum ekleme

  3. Durumla ilişkili olayları ve özellikleri görüntülemek için Olay Yapılandırması katlama'sı açın.

    Olay yapılandırmasıyla Denetçi aracılığıyla Çekirdek Durum ekleme

Betik aracılığıyla Çekirdek Durum Ekleme

Çekirdek AddNewState(stateName) durumu eklemek için yöntemini kullanın. Kullanılabilir çekirdek durum adlarının listesi için CoreInteractionState enum'u kullanın.

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

interactiveElement.AddNewState("SelectFar");

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

States Internal Structure

Interactive Öğesi'nin durumları InteractionState türündedir. , InteractionState aşağıdaki özellikleri içerir:

  • Ad:Eyaletin adı.
  • Değer:Durum değeri. Durum açıksa, durum değeri 1'tir. Durum kapalı ise, durum değeri 0'dır.
  • Etkin:Durumunun etkin olup olmadığı. Durum etkin olduğunda Etkin özelliğinin değeri true, durum kapalıysa false olur.
  • Etkileşim Türü:Bir durumun Etkileşim Türü, bir durumun amaçlanan etkileşim t t'leridir.
    • None: Herhangi bir giriş etkileşimini desteklemez.
    • Near: Yakın etkileşim desteği. Giriş, ifade edilen bir el başka bir oyun nesnesiyle doğrudan iletişim kursa da, yani ifade edilen el, dünya boşluğunda oyun nesnesinin pozisyonuna yakın olduğunda neredeyse etkileşim olarak kabul edilir.
    • Far: Uzak etkileşim desteği. Giriş, oyun nesnesiyle doğrudan iletişim gerekli değilken uzak etkileşim olarak kabul edilir. Örneğin, denetleyici ray veya bakış aracılığıyla yapılan giriş, uzak etkileşim girişi olarak kabul edilir.
    • NearAndFar: Hem yakın hem de uzak etkileşim desteğini kapsar.
    • Other: İşaretçiden bağımsız etkileşim desteği.
  • Olay Yapılandırması:Bir durum için olay yapılandırması, serileştirilmiş olaylar profili giriş noktasıdır.

Bu özelliklerin hepsi Etkileşimli Öğe'de bulunan State Manager içinde dahili olarak ayarlanır. Durumları değiştirme için aşağıdaki yardımcı yöntemleri kullanın:

Durum Ayarı Yardımcı Yöntemleri

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

Bir durum için olay yapılandırmasını almak, durumuna özgü bir durumdur. Her çekirdek durumunun, her çekirdek durumunu açıklayan bölümler altında özetlenen belirli bir olay yapılandırma türü vardır.

Bir eyaletin olay yapılandırmasını almayla ilgili genelleştirilmiş bir örnek şu şekildedir:

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

Varsayılan Durum

Varsayılan durum her zaman Etkileşimli Öğede mevcuttur. Bu durum yalnızca diğer tüm eyaletler etkin değilken etkin olur. Başka bir durum etkin hale gelirse, Varsayılan durum dahili olarak kapalı olarak ayarlanır.

Bir Etkileşimli Öğe, durum listesinde varsayılan ve Odak durumları ile başlatılır. Varsayılan durum her zaman durum listesinde mevcut olması gerekir.

Varsayılan Durum Olaylarını Alma

Varsayılan Durum için olay yapılandırma türü: 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");
});

Odak Durumu

Odak durumu, üzerine gelindiğinde karma gerçeklik olarak düşünebilirsiniz, yakın ve uzak bir etkileşim durumu. Odak durumu için yakın ve uzak etkileşim arasındaki ayırt edici faktör, geçerli etkin işaretçi t terektir. Odak durumu için işaretçi türü, İşaretçi İşaretçisi ise etkileşim yakın etkileşim olarak kabul edilir. Birincil işaretçi, Temel İşaretçisi yoksa etkileşim uzak etkileşim olarak kabul edilir. Odak durumu, etkileşimli öğede varsayılan olarak mevcuttur.

Sanal el etkileşimiile Odak Durumu Davranışı Odak durumu

Inpsector'da Odak Durumu Denetçisi Odak durumu

Odak Durumu Olaylarını Alma

Odak Durumu için olay yapılandırma türü: 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");
});

Yakın Odak ve Odak Uzak Davranışı

Sanal el etkileşimiyle yakın ve uzak odak

Yakın Durumda Odaklan

Odak Yakını durumu, bir odak olayı ortaya çıkarken ayarlanır ve birincil işaretçi, yakın etkileşimin bir göstergesi olan Temel işaretçidir.

Durum Davranışına YakınOdak Sanal el etkileşimi ile yakın durumlara odaklanma

Durum Denetçisi'neYakın Odak Denetçide yakın bileşene odaklanma

FocusNear Durum Olaylarını Alma

FocusNear State için olay yapılandırma türü: 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");
});

Odak Uzak Durumu

Odak Uzak durumu, birincil işaretçiYir işaretçisi değilken ayarlanır. Örneğin, varsayılan denetleyici ray işaretçisi ve GGV (Bakış, Hareket, Ses) işaretçisi uzak etkileşim işaretçileri olarak kabul edilir.

Odak Uzak Durum Davranışı Sanaleletkileşimiyle uzak odak durumu

Odak Uzak DurumDenetçisi Denetçide uzak bileşene odaklanın

Odak Uzak Durum Olaylarını Alma

FocusFar Durumu için olay yapılandırma türü: 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");
});

Dokunma durumu

Dokunma durumu, bir ifade nesneyi doğrudan nesneye dokunduğunda ayarlanan yakın etkileşim durumudur. Doğrudan dokunma, bir yandan gelen dizin Finger nesnesinin dünya konumuna çok yakın olduğu anlamına gelir. Varsayılan olarak, NearInteractionTouchableVolume durum listesine dokunma durumu eklenirse, nesneye bir bileşen iliştirilir. NearInteractionTouchableVolumeNearInteractionTouchable Dokunma olaylarını algılamak için bir veya bileşeninin varlığı gereklidir. Ve arasındaki fark NearInteractionTouchableVolume , NearInteractionTouchableNearInteractionTouchableVolume nesnenin Collider dayalı bir dokunma algıladığında ve NearInteractionTouchable düzlemin tanımlı alanı içinde Touch 'ı algılar.

Sanal el etkileşimi ile dokunma durumu davranışı dokunma durumu

Denetçide dokunmatik durum denetçisidokunma durumu bileşeni

Dokunma durumu olaylarını alma

Dokunma durumu için olay yapılandırma türü: 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");
});

Uzak durum seçin

En uzak durum seç, ortaya çıkacak bir durumdur IMixedRealityPointerHandler . Bu durum, en çok etkileşim tıklamalarını (AIR-TAP) algılayan ve varsayılan denetleyici Ray işaretçisi veya GGV işaretçisi gibi en fazla etkileşim işaretçisi kullanımı üzerinden tutmakta olan bir etkileşim durumudur. En uzak durum, adlı olay yapılandırması kapsamındaki bir seçeneğe sahiptir Global . GlobalDoğruysa, IMixedRealityPointerHandler genel giriş işleyicisi olarak kaydedilir. Bir işleyici genel olarak kaydedilmişse, giriş sistem olaylarının tetiklenmesi için bir nesneye odaklanmak gerekli değildir. Örneğin, bir Kullanıcı herhangi bir zamanda, odak içindeki nesneden bağımsız olarak, her zaman bir hava dokur/seçim hareketi hakkında bilgi almak isterse, Global true olarak ayarlayın.

Sanal el etkileşimi ile en uzak durum davranışını seçin

En uzak durum denetçisini seçindenetçide uzak bileşen seçin

Seçme ve durum olaylarını alma

SelectFar State için olay yapılandırma türü: 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");
});

Tıklanan durum

Tıklanan durum, varsayılan olarak bir çok etkileşim (uzak durum Seç) tarafından tetiklenir. Bu durum dahili olarak açık, OnClicked olayını çağırır ve hemen Kapalı durumuna geçti.

Not

Durum etkinliğine dayalı Inspector 'daki görsel geri bildirimler, oturum açık ve hemen kapalı olduğundan tıklatılan durum için mevcut değil.

Tıklanan durum davranışınatıklandıdurumu sanal el etkileşimleri

Tıklama durumu denetçisidenetçisinde durum bileşeni ' ne tıklayın

Yakın ve en tıklanan durum örneği
Tıklanan durum, yöntemi kullanılarak ek giriş noktaları aracılığıyla tetiklenebilir interactiveElement.TriggerClickedState() . Örneğin, bir Kullanıcı yakın etkileşim dokunarak bir nesneye bir tıklama tetiklemeyi istiyorsa, TriggerClickedState() yöntemi dokunma durumuna dinleyici olarak ekler.

Sanal el etkileşimlerine sahip yakın ve uzak durum

Tıklanan durum olaylarını alma

Tıklanan durum için olay yapılandırma türü: ClickedEvents

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

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

Aç ve Kapat durumuna geç

Açma ve kapatma durumları bir çifdir ve iki durumlu davranış için her ikisi de bulunmalıdır. Varsayılan olarak, Iki durumlu açma ve kapatma durumları, bir uzak tıklama (uzak durum Seç) aracılığıyla tetiklenir. Varsayılan olarak, geçiş kapalı durumu başlangıç durumunda etkindir, yani iki durumlu düğme kapalı olarak başlatılır. Bir kullanıcı başlangıç durumunda etkin durumuna geç ' i istiyorsa, geçiş durumu ' nu IsSelectedOnStart doğru olarak ayarlayın.

Toggleon ve kapalı durum davranışısanal el etkileşimlerinde açık ve kapalı durumuna geç

Denetleyici 'de toggleon ve kapalı durum denetçisigeçiş bileşeni

Yakın ve çok durumlu durumlar örneği
Tıklanmış duruma benzer şekilde, durumlu durum ayarı yöntemi kullanılarak birden çok giriş noktasına sahip olabilir interactiveElement.SetToggleStates() . Örneğin, bir Kullanıcı, geçiş durumlarını ayarlamak için ek bir giriş noktası olarak dokunma istiyorsa, SetToggleStates() yöntemi dokunma durumundaki olaylardan birine ekler.

Sanal el etkileşimlerine yakın ve uzak geçiş

Geçiş ve kapalı durum olaylarını alma

ToggleOn durumu için olay yapılandırma türü: ToggleOnEvents
ToggleOff durumu için olay yapılandırma türü: 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");
});

Konuşma anahtar sözcük durumu

Konuşma anahtar sözcük durumu, karma gerçeklik konuşma profilinde tanımlanan anahtar sözcükleri dinler. Çalışma zamanı öncesinde konuşma komutu profilinde yeni anahtar kelimesinin kaydedilmesi gerekır (aşağıdaki adımlar).

Sanal etkileşime sahip konuşma anahtar sözcük durumu davranışıkonuşma anahtar sözcüğü

Inspector 'da konuşma anahtar sözcük durumu denetçisikonuşma anahtar sözcük bileşeni

Not

Konuşma anahtar sözcük durumu, yukarıdaki GIF 'teki F5 tuşuna basılarak düzenleyicide tetiklenir. Konuşma için düzenleyici testinde ayarlama aşağıdaki adımları izleyerek açıklanmıştır.

Konuşma komutu/anahtar sözcük kaydetme

  1. Mixedrealitytoolkit oyun nesnesini seçin

  2. Geçerli profili Kopyala ve Özelleştir ' i seçin

  3. Giriş bölümüne gidin ve giriş profilini değiştirmeyi etkinleştirmek için Kopyala ' yı seçin

  4. Giriş profilindeki konuşma bölümüne gidin ve konuşma profilini kopyalayın

    MRTK oyun nesnesinde konuşma anahtar sözcük profili

  5. Yeni konuşma Ekle komutunu seçin

    MRTK profiline yeni bir konuşma anahtar sözcüğü ekleme

  6. Yeni anahtar sözcüğü girin. İsteğe bağlı: düzenleyicide test için izin vermek üzere KeyCode 'u F5 (veya başka bir KeyCode) olarak değiştirin.

    MRTK profilinde konuşma anahtar sözcüğünü yapılandırma

  7. Etkileşimli öğe konuşma anahtar sözcük durumu Denetçisi ' ne dönün ve anahtar sözcük ekle ' yi seçin.

    Etkileşimli öğe bileşenine anahtar sözcük ekleme

    Anahtar sözcük doğrulama ve kayıt

  8. Konuşma profilinde az önce kaydedilen yeni anahtar sözcüğü girin

    Yeni konuşma anahtar sözcüğü girme

Konuşma anahtar sözcük durumunu düzenleyicide test etmek için, konuşma anahtar sözcüğü tanınan olayının benzetimini yapmak üzere 6. adımda (F5) tanımlanan KeyCode ' a basın.

Konuşma anahtar sözcük durumu olaylarını alma

SpeechKeyword durumu için olay yapılandırma türü: 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"); 
});

Özel durumlar

Inspector aracılığıyla özel durum oluşturma

Inspector aracılığıyla oluşturulan özel durum, varsayılan durum olayı yapılandırması ile başlatılır. Özel durum için varsayılan olay yapılandırması türündedir StateEvents ve OnStateOn ve OnStateOff olaylarını içerir.

  1. Etkileşimli öğe için Inspector 'da özel durum oluşturma sayfasına gidin.

    Özel durum oluşturma

  2. Yeni durumun adını girin. Bu ad benzersiz olmalıdır ve mevcut çekirdek durumlarıyla aynı olamaz.

    Yeni bir özel durumun adını girme

  3. Durum listesine eklemek için durum adını ayarla ' yı seçin.

    Durum listesine özel durum Ekle

    Bu özel durum StateEvents , ve olaylarını içeren varsayılan olay yapılandırmasıyla başlatılır OnStateOnOnStateOff . Yeni bir durum için özel olay yapılandırması oluşturmak için bkz: özel bir olay yapılandırması Ile özel durum oluşturma.

    Etkileşimli öğe bileşeninde gösterilen yeni durum

Komut dosyası aracılığıyla özel durum oluşturma

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

Özel bir olay yapılandırmasıyla özel durum oluşturma

Klavye adlı bir özel durum için örnek dosyalar şurada bulunur: MRTK\SDK\Experimental\InteractiveElement\Examples\Scripts\CustomStateExample

Aşağıdaki adımlarda, özel durum olayı yapılandırması ve alıcı dosyaları oluşturma hakkında varolan bir örnek gösterilmektedir.

  1. Bir durum adı düşünün. Bu ad benzersiz olmalıdır ve mevcut çekirdek durumlarıyla aynı olamaz. Bu örneğin amaçları doğrultusunda, durum adı klavyeolacak.

  2. Durum adı + "alıcı" ve durum adı + "olaylar" adlı iki. cs dosyası oluşturun. Bu dosyaların adlandırılması dahili olarak dikkate alınır ve durum adı + olay/alıcı kuralı ' nı izlemelidir.

    Klavye durumu betikleri

  3. Dosya içeriğiyle ilgili daha fazla ayrıntı için bkz. KeyboardEvents. cs ve Keyboardahize. cs dosyaları. Yeni olay yapılandırma sınıfları 'den BaseInteractionEventConfiguration devralınmalı ve yeni olay alıcısı sınıfları 'den devralınmalı. BaseEventReceiver Klavye durumunun durum ayarına örnekler dosyasında CustomStateSettingExample.cs bulunur.

  4. Durum adını kullanarak durumu Etkileşimli Öğeye ekleyin; olay yapılandırması ve olay alıcı dosyaları varsa durum adı tanınacak. Özel olay yapılandırma dosyasındaki özellikler denetçide görüntü gerekir.

    Etkileşimli öğeye özel durum eklemeEtkileşimli öğede tanınan özel durum

  5. Olay yapılandırması ve olay alıcısı dosyalarına daha fazla örnek için şu yollarda yer alan dosyalara bakın:

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

Örnek Sahne

Etkileşimli Öğe + Durum Görselleştiricisi'nin örnek sahnesi burada bulunur: MRTK\SDK\Experimental\InteractiveElement\Examples\InteractiveElementExampleScene.unity

Etkileşimli Öğe ve Durum Görselleştiricisi ile örnek sahne

Sıkıştırılabilir Düğme

Örnek sahne, ve adlı prefab'ları içerir. Bu önfazlar, Etkileşimli Öğe ve Durum Görselleştiricisi kullanılarak oluşturulmuş düğmelerin CompressableButtonCompressableButtonToggle davranışını PressableButtonHoloLens2 yansıtıyor. Bileşen CompressableButton şu anda temel sınıf olarak ile PressableButton + PressableButtonHoloLens2BaseInteractiveElement birleşimidir.

Durum Görselleştiricisi [Deneysel]

Durum Görselleştiricisi bileşeni, bağlantılı Bir Etkileşimli Öğe bileşeninde tanımlanan durumları temel alan bir nesneye animasyonlar ekler. Bu bileşen animasyon varlıkları oluşturur, MixedRealityToolkit.Generated klasörüne ekler ve bir hedef oyun nesnesine Animasyon Ekle özelliği ekleyerek basitleştirilmiş animasyon anahtar çerçevesi ayarını etkinleştirir. Eyaletler arasında animasyon geçişlerini etkinleştirmek için bir Animator Controller varlığı oluşturulur ve ilişkili parametrelerle ve durum geçişleriyle varsayılan bir durum makinesi oluşturulur. Durum makinesi Unity'nin Animator penceresinde sızabilirsiniz.

Durum Görselleştiricisi ve Unity Animasyon Sistemi

State Visualizer şu anda Unity Animasyon Sisteminden yararlanıyor.

Durum Görselleştiricisi'nde Yeni Animasyon Klipleri Oluştur düğmesine basıldığında, Interactive Öğesinde durum adlarına göre yeni animasyon klibi varlıkları oluşturulur ve MixedRealityToolkit.Generated klasörüne yerleştirilir. Her durum kapsayıcısı içinde Animasyon Klibi özelliği ilişkili animasyon klibine ayarlanır.

Durum görselleştirici bileşeninde animasyon klipleri

Animasyon klipleri arasındaki sorunsuz geçişleri yönetmek için bir Animator State Machine de oluşturulur. Varsayılan olarak, durum makinesi Etkileşimli Öğe'de herhangi bir durum arasında geçişlere izin vermek için Herhangi Bir Durum kullanır.

Animasyonda tetiklenen durum görselleştiricileri her durum için de oluşturulur, tetikleyici parametreleri bir animasyonu tetiklemek için Durum Görselleştiricisi'nde kullanılır.

Unity durum makinesi

Çalışma Zamanı Sınırlamaları

Durum Görselleştiricisi, Denetçi aracılığıyla bir nesneye eklenmiştir ve betik aracılığıyla ek olamaz. AnimatorStateMachine/AnimationController'i değiştiren özellikler, uygulama örünce kaldırılan bir düzenleyici ad alanına ( UnityEditor.Animations ) sahiptir.

Durum Görselleştiriciyi kullanma

  1. Küp Oluşturma

  2. Etkileşimli Öğe Ekleme

  3. Durum Görselleştiricisi Ekleme

  4. Yeni Animasyon Klipleri Oluştur'a tıklayın

    Yeni animasyon klipleri oluşturma

    Görselleştirici ve etkileşimli öğe bileşenlerinde oluşturulan animasyon klipleri gösteriliyor

  5. Odak durumu kapsayıcısı'nde Hedef Ekle'yi seçin

    Durum görselleştiricisi hedefi ekleme

  6. Geçerli oyun nesnesini hedef alana sürükleyin

    Durum görselleştiricisi hedefini ayarlama

  7. Küp Animasyonu Değiştirilebilir Özellikler katlama açma

  8. Animasyon özelliği açılan menüsünü ve ardından Renk'i seçin

    Durum görselleştirici rengini ayarlama

  9. Color Animatable Özelliğini Ekle'yi seçin

    Görselleştirici renk animasyonu özelliği seçme

  10. Renk Seçme

    Renk tekerleğinden görselleştirici rengi seçme

  11. Oynat'a basın ve geçiş renk değişikliğini gözlemler

    Sanal el etkileşimi ile geçişli renk değişikliği örneği

Animasyona Animasyon Özelliği

Animasyon Eklenebilir Özellikler'in birincil amacı, animasyon klibi anahtar çerçevesi ayarını basitleştirmektir. Bir kullanıcı Unity Animasyon Sistemi'ne aşina ise ve oluşturulan animasyon kliplerinin ana çerçevelerini doğrudan ayarlamayı tercih ederse, hedef nesneye Animasyon özellikleri ekp klibi Unity'nin Animasyon penceresinde (Windows Animasyon Animasyonu) >> açamaz.

Animasyon için Animasyonlanabilir özellikleri kullanıyorsanız eğri türü EaseInOut olarak ayarlanır.

Geçerli AnimasyonLanabilir Özellikler:

Ölçek Uzaklığı

Ölçek Kaydırma Animasyonu Özelliği nesnenin geçerli ölçeğini alır ve tanımlanan uzaklığı ekler.

Sanal el etkileşimiyle kaydırma ölçeklendirme

Konum Uzaklığı

Position Offset Animatable özelliği nesnenin geçerli konumunu alır ve tanımlanan uzaklığı ekler.

Sanal el etkileşimiyle konum uzaklığı

Renk

Color Animatable özelliği, malzemenin ana renk özelliğine sahipse malzemenin ana rengini temsil eder. Bu özellik özelliğine material._Color animasyonlar sağlar.

Sanal el etkileşimiyle odak rengi değişikliği

Gölgelendirici Rengi

Gölgelendirici Rengi Animasyonu Özelliği, renk türünde bir gölgelendirici özelliğine başvurur. Tüm gölgelendirici özellikleri için bir özellik adı gereklidir. Aşağıdaki gif, ana malzeme rengi olan Fill_Color gölgelendirici renk özelliğine animasyonu göstermeyi gösteriyor. Malzeme denetçisinde değişen değerleri gözlemlemek.

Sanal el etkileşimi ile renk gölgelendirme

Gölgelendirici Float

Gölgelendirici Float Animatable özelliği, float türünde bir gölgelendirici özelliğine başvurur. Tüm gölgelendirici özellikleri için bir özellik adı gereklidir. Aşağıdaki gif'te, Malzeme denetçisinde Yer Alan Özelliği'nin değişen değerlerini gözlemleyebilirsiniz.

Sanal el etkileşimi ile gölgelendirici float

Gölgelendirici Vektörü

Gölgelendirici Vektörü Animasyonu Özelliği, Vector4 türünde bir gölgelendirici özelliğine başvurur. Tüm gölgelendirici özellikleri için bir özellik adı gereklidir. Aşağıdaki gif'te Tiling (Main Tex_ST) özelliği için malzeme denetçisinde değişen değerleri gözlemleyebilirsiniz.

Sanal el etkileşimi ile gölgelendirici vektörü

Animasyonlanabilir Gölgelendirici Özellik Adlarını Bulma

  1. Pencere Animasyonu > Animasyonu'ne > gidin

  2. Durum Görselleştiricisi olan nesnenin hiyerarşide seçildiğinden emin olun

  3. Animasyon penceresinde herhangi bir animasyon klibi seçin

  4. Özellik Ekle'yiseçin, Mesh Renderer katlama özelliğini açın

    Animasyon penceresine animasyon özelliği ekleme

  5. Bu liste tüm Animasyon eklenebilir özellik adlarını içerir

    Animator penceresindeki mesh işleyicisi animasyon özellikleri

Ayrıca bkz.