Udostępnij za pośrednictwem


Dokumentacja węzła tworzenia skryptów wizualnych usługi Mesh

Przejdź do artykułu Omówienie tworzenia skryptów wizualnych

Interwał

W węźle zdarzenia interwału

Węzeł zdarzeń Interwał wyzwala przepływ skryptu w regularnych odstępach czasu synchronizowanych we wszystkich klientach w tym samym pomieszczeniu.

  • Interwał: interwał (w sekundach) między zdarzeniami.
  • Opóźnienie: opóźnienie (w sekundach) przed pierwszym zdarzeniem. Za pomocą tego polecenia można przeplatać zdarzenia z tym samym interwałem wyzwalanym przez różne węzły Interwału .

Po zmianie stanu

W węźle Zdarzenia zmienione stanu nawiązywanie połączenia z węzłem Pobierz zmienną

Węzeł zdarzenia Zmieniono stan jest wyzwalany, gdy dowolny z jego danych wejściowych zmienia jego wartość. Jest to zaawansowany mechanizm, który umożliwia skryptom reagowanie na zmiany stanu spowodowane interakcją użytkownika lub innymi skryptami wizualnymi, zarówno lokalnie, jak i na innych klientach w tym samym pokoju.

  • Wartości: określa liczbę portów wejściowych, które mają być obserwowane. Jednocześnie można zaobserwować maksymalnie 10 portów wejściowych. W przypadku zmiany stanu jest wyzwalany, gdy którykolwiek z nich zmienia jego wartość.
  • W 0, W 1 i więcej w tej sekwencji: Dane wejściowe zaobserwowane dla zmian stanu. Do tych danych wejściowych można dołączyć dowolny węzeł danych: Pobierz zmienną lub dowolną właściwość składnika (wystąpienie lub statyczne).
  • Out 0, Out 1 i więcej w tej sekwencji: Dane wyjściowe odpowiadające wejściu In 0 (itd.), które zwracają obserwowane wartości.

Podczas obserwowania zmiennych skryptu lub właściwości składników funkcja On State Changed zwykle działa, rejestrując odpowiednie wywołania zwrotne wewnętrznie, unikając konieczności ciągłej ponownej oceny danych wejściowych. Jeśli odpowiednie wywołanie zwrotne nie jest dostępne, tak jak w poniższym przykładzie, węzeł Po zmianie stanu zmieni kolor na czerwony, a panel Inspektor grafu ostrzega, że dane wejściowe nie mogą być obserwowane wydajnie i dlatego są wyłączone:

Zrzuty ekranu węzła zdarzenia On State Changed łączące się z wynikiem porównywania węzła Pobierz zmienną z literałem całkowitym bez sondowania.

W takim przypadku możesz wybrać pozycję Zezwalaj na sondowanie w panelu Inspektor grafu , aby wymusić zmianę stanu w celu wykrywania zmian przez ciągłe ponowne ocenianie danych wejściowych. Węzeł zachowuje żółty pasek u góry, aby przypomnieć, że obserwuje dane wejściowe przy zwiększonym koszcie środowiska uruchomieniowego.

Zrzuty ekranu węzła zdarzenia On State Changed łączące się z wynikiem porównywania węzła Pobierz zmienną z literałem całkowitym zezwalają na sondowanie.

Pokaż okno dialogowe

Zrzut ekranu przedstawiający węzeł akcji Pokaż okno dialogowe

W węźle Pokaż okno dialogowe zostanie wyświetlone okno dialogowe z komunikatem niestandardowym i jednym lub kilkoma przyciskami, które umożliwiają użytkownikowi odrzucenie okna dialogowego.

  • Tekst: komunikat wyświetlany w oknie dialogowym. Tekst wiadomości zostanie opakowany w razie potrzeby.
  • Przyciski: wybór przycisków do prezentowania użytkownikowi. Można wyświetlić następujące przyciski: OK, Anuluj, Tak, Nie, Potwierdź, Dalej, Ponów próbę, Kontynuuj, Pozostaw.
  • Wynik: nazwa zmiennej do przechowywania odpowiedzi użytkownika podczas odrzucania okna dialogowego przez wybranie przycisku. (Jeśli pozostanie puste, odpowiedź zostanie odrzucona).
  • Cel: GameObject ze składnikiem Zmiennych do przechowywania odpowiedzi użytkownika.

Jeśli zmienna Result jest zdefiniowana, zostanie ona zresetowana do pustego ciągu zaraz po wprowadzeniu węzła Pokaż okno dialogowe i ustawiona na odpowiedź użytkownika asynchronicznie, gdy użytkownik wybierze przycisk, aby zamknąć okno dialogowe. Przechowywana wartość jest nielokalizowaną etykietą przycisku z powyższej listy. Użyj węzła Zdarzenia zmienionego stanem, aby zareagować na odpowiedź użytkownika, jak w poniższym przykładzie:

Zrzut ekranu przedstawiający węzeł Pokaż okno dialogowe, który zbiera odpowiedź użytkownika w zmiennej, a następnie węzeł On State Changed (Zmieniono stan) odpowiadający zmianie zmiennej

Zmienna Result może być lokalna lub udostępniona. Jeśli jest ona udostępniona, odpowiedź użytkownika jest wysyłana do wszystkich klientów w tym samym pomieszczeniu, a węzeł zdarzeń Zmieniony stan na wszystkich klientach reaguje na odpowiedź użytkownika.

Węzły zdarzeń fizyki

Węzły zdarzeń fizyki w wyzwól Enter, Po wyjściu wyzwalacza, Po kolizji enter i Przy wyjściu kolizji są niezawodnie w sieci. Domyślnie te zdarzenia są niezawodnie wyzwalane na wszystkich klientach w pomieszczeniu; jeśli jednak zderzacz fizyki zaobserwowany przez te węzły zdarzeń jest w zakresie składnika Zakresu fizyki lokalnej, zdarzenia są niezawodnie wyzwalane na dokładnie jednym kliencie. Dzięki temu przepływy skryptów, które są wyzwalane w celu niezawodnego odczytu i zapisu stanu udostępnionego (na przykład zaktualizowania współużytkowanej zmiennej oceny).

Zabezpieczenia

Usługa Mesh chroni użytkowników przed scenariuszami zagrożenia, takimi jak:

  • Naruszona zawartość sceny — na przykład złośliwe próby uzyskania dostępu do poufnych danych lokalnych.
  • Naruszony klient lub kanał transportu — na przykład złośliwe próby odczytu lub zapisu niedostępnych danych zdalnych na innych klientach.

Aby to osiągnąć, usługa Mesh uruchamia skrypty wizualne w piaskownicy (na przykład JavaScript w przeglądarce internetowej).

Podczas uruchamiania sceny usługa Mesh używa wyselekcjonowanych dozwolonych list, aby zweryfikować skrypty wizualne w celu ograniczenia dostępu do niektórych typów składników aparatu Unity i bezpiecznego podzestawu ich właściwości.

W środowisku uruchomieniowym sceny usługa Mesh ogranicza dostęp do niektórych części sceny:

  • Lokalnie: uniemożliwiając dostęp do wewnętrznych i innych poufnych danych usługi Mesh.
  • Zdalnie: sprawdzając, czy autor sceny zamierza zmodyfikować tę część sceny. Jest to wykonywane przez statyczne analizowanie skryptów wizualnych po stronie odbiorcy pod kątem ich potencjalnych zapisów sceny.

Przykłady:

  • Złośliwy lokalny skrypt wizualny chce dać wszystkie awatary bobble głowy. W tym celu próbuje przeskanować całą scenę dla obiektów GameObject, które reprezentują głowy awatarów. Siatka automatycznie filtruje wyniki skanowania w celu wykluczenia systemu awatarów.
  • Złośliwy klient zdalny chce odwrócić scenę, przerzucając wszystkie obiekty GameObject do góry nogami. Aby to osiągnąć, wysyła aktualizację właściwości, która ustawia skalę pionową każdego obiektu GameObject w scenie. Jednak ponieważ żaden skrypt wizualny na kliencie odbierający nie jest przeznaczony do wykonywania takich czynności, klient lokalny ignoruje zdalne dane wejściowe.

Zobacz też