Mesh 101 Tutorial Chapter 3: Add interactivity with Mesh Visual Scripting
Uwaga
Wprowadzamy regularne aktualizacje zestawu narzędzi usługi Mesh, a to wideo może nie odzwierciedlać wszystkich najnowszych zmian. Zawartość tego artykułu powinna być widoczna jako źródło prawdy.
Teraz, gdy ukończyliśmy fazę konfiguracji, przejdźmy do interaktywnego tworzenia obiektów GameObjects. W tym rozdziale omówimy tworzenie skryptów wizualnych usługi Mesh, których można użyć do dodawania logiki niestandardowej do środowiska.
Uwaga
Istnieją dwa typy skryptów siatki: Tworzenie skryptów w chmurze siatki, które używa kodu C# i tworzenie skryptów wizualnych usługi Mesh, gdzie tworzysz graf skryptów, a następnie dodajesz węzły (nazywane również jednostkami) w sekwencji, aby utworzyć logikę kodowania. W tej wersji samouczka usługi Mesh 101 jest używana obsługa skryptów wizualnych usługi Mesh; w poprzedniej wersji użyto skryptów usługi Mesh Cloud Scripting.
Skrypty siatki nie są wymagane dla każdego środowiska, ale będą potrzebne do funkcji, które dodamy tutaj: tworzenie przycisku interaktywnego, wyzwalanie wyskakującego tekstu informacyjnego i teleportowanie wokół sceny.
Stacja 3.1: Tworzenie przycisku z możliwością interakcji
W naszym pierwszym zadaniu chcemy utworzyć przycisk, który będzie odtwarzał film wideo po naciśnięciu przez awatar. Awatar może następnie nacisnąć ten sam przycisk, aby zatrzymać wideo.
- W oknie Scena przejdź do tarasu sphere zawierającego stacje rozdziału 3 i dostosuj widok tak, aby patrzył na pierwszą stację, 3.1 - Odtwarzanie wideo, jak pokazano poniżej.
Jak widać, istnieje już ekran wideo, ale potrzebuje przycisku Odtwórz/Zatrzymaj. Jak wyjaśniono w polu tekstowym stacji, utworzymy wykres skryptu z pewną logiką przycisku, dzięki czemu przycisk może służyć do przełączania i wyłączania i zmieniania tekstu przycisku.
Dodawanie przycisku do sceny
Upewnij się, że obiekt GameObject o nazwie Chapter3 i jego obiekt podrzędny o nazwie 3.1 — wideo są rozwinięte.
W oknie Projekt wyszukaj prefab ButtonBase. Upewnij się, że wybrano pozycję WSZYSTKIE dla filtru Wyszukaj .
Przeciągnij pozycję ButtonBase z okna Projekt, a następnie w hierarchii upuść ją na obiekcie GameObject o nazwie 3.1 — wideo, aby baza ButtonBase została umieszczona jako element podrzędny do wersji 3.1 — wideo.
Upewnij się, że wartości Pozycji przekształcenia>dla elementu ButtonBase mają wartość 0, 0, 0.
Element ButtonBase znajduje się w scenie nieco niżej niż w miejscu, w którym chcemy. Naprawmy to.
Upewnij się, że w hierarchii wybrano pozycję ButtonBase.
W inspektorze zmień wartość Przekształć>pozycję>Y na "1".
Doskonale! Teraz baza ButtonBase znajduje się tuż pod ekranem wideo.
Zmienianie nazwy przycisku
Po wybraniu pozycji ButtonBase w inspektorze zmień nazwę Elementu ButtonBase na "PlayVideoButton".
Zmienianie etykiety przycisku
W tej chwili tekst na przycisku wskazuje etykietę. Zmieńmy to na "Play".
W hierarchii rozwiń obiekt PlayVideoButton GameObject, aby wyświetlić jego obiekt podrzędny Przycisk, a następnie rozwiń przycisk, aby wyświetlić jego obiekty podrzędne, a następnie wybierz obiekt podrzędny Etykieta.
W inspektorze przejdź do składnika TextMeshPro - Text, a następnie w polu Wprowadzanie tekstu zmień tekst na "Odtwórz".
Tworzenie skryptu wizualnego dla przycisku
W obszarze Hierarchia upewnij się, że wybrano pozycję PlayVideoButton .
W inspektorze kliknij pozycję Dodaj składnik, a następnie wybierz pozycję Maszyna skryptu.
Należy pamiętać, że w inspektorze: maszynie skryptu i zmiennych dodano dwa nowe składniki. W dolnej części inspektora znajduje się również nowe okno o nazwie Mesh Visual Scripting Diagnostics (Diagnostyka skryptów wizualnych usługi Mesh). To okno przekaże Ci opinię na temat skryptu wizualnego i może być przydatne do rozwiązywania problemów.
Należy pamiętać, że w składniku Maszyna skryptu opcja Źródło jest ustawiona na graf. Dostępne są dwie opcje: Źródło: Graf i Osadź. Każda z nich ma zalety i wady. Dla naszych skryptów wybierzemy pozycję Graph , ponieważ skrypt programu Graph jest zapisywany jako oddzielny plik i zapewnia większą elastyczność.
Napiwek
Graf i osadzanie opisano bardziej szczegółowo w artykule Unity Script Machine (Maszyna skryptu aparatu Unity).
W składniku Script Machine kliknij przycisk Nowy .
W oknie Zapisywanie grafu utwórz nowy folder, a następnie zmień jego nazwę na "Scripts".
Otwórz folder Scripts, a następnie w polu tekstowym Nazwa pliku wpisz "PlayVideoButton".
Po zakończeniu kliknij przycisk Zapisz .
W składniku Script Machine wprowadź nazwę w polu Tytuł grafu: "Video Player".
Wprowadź opis w polu Podsumowanie grafu: "Definiuje sposób reagowania odtwarzacza wideo na akcje odtwarzania/zatrzymywania".
Konfigurowanie grafu skryptów
W składniku Maszyna skryptu kliknij pozycję Edytuj graf. Spowoduje to otwarcie okna wykresu skryptu. Przeciągnij i umieść go obok karty Project and Console (Projekt i konsola ), jeśli jeszcze go nie ma, aby można było zobaczyć w tym samym czasie okno Wykres skryptu i scena .
W miarę dodawania węzłów może być potrzebne więcej miejsca w oknie; Możesz kliknąć przycisk z trzema kropkami, a następnie wybrać pozycję Maksymalizuj , aby to osiągnąć, lub kliknąć przycisk Pełny ekran w prawym górnym rogu okna.
Uwaga
Węzeł jest również nazywany jednostką w skryptach wizualnych. W tym samouczku będziemy nadal używać węzła terminu .
Nie potrzebujemy domyślnych węzłów OnStart i OnUpdate ; usuń je.
Układ grafu skryptu
Nasz wykres skryptów będzie miał dwie sekcje:
Sekcja 1. Wykryj, kiedy jest klikany przycisk odtwarzania/zatrzymywania odtwarzacza wideo. Sekcja 2: Po kliknięciu odtwarzania wideo. Po ponownym kliknięciu zatrzymaj wideo.
Oto podgląd tego, jak będzie wyglądał wynik końcowy:
Wykryj, czy przycisk został kliknięty
Pierwsza sekcja, która wykrywa, czy przycisk zostanie kliknięty, będzie wymagać trzech węzłów. Obiekt GameObject w projekcie, który rzeczywiście "nasłuchuje" i reaguje na kliknięcie, to Przycisk. Dodajmy to do wykresu skryptów.
Tworzenie zmiennej obiektu przycisku
W hierarchii rozwiń węzeł PlayVideoButton.
Na tablicy Wykres skryptu utwórz nową zmienną Object: wpisz nazwę "Button" w polu (Nowa nazwa zmiennej), a następnie kliknij przycisk "+".
Ustaw typ zmiennej obiektu na Obiekt gry.
Z hierarchii przeciągnij obiekt GameObject przycisku, a następnie upuść go w polu Wartość nowej zmiennej.
Przeciągnij zmienną obiektu Przycisku z tablicy blackboard , a następnie upuść ją w grafie skryptów, aby dodać ją jako węzeł.
PORADA: Możesz pośminąć chwilę tutaj, aby zbadać niektóre składniki obiektu GameObject przycisku :
Konfiguracja z możliwością interakcji z usługą Mesh: ten składnik sprawia, że Przycisk jest obiektem, z którym można korzystać. Aby dowiedzieć się więcej, zobacz Grab, hold and throw with Interactables (Chwytanie, trzymanie i zgłaszanie za pomocą funkcji Interakcji).
Maszyna skryptu: ma wykres skryptu o nazwie Zachowanie podstawowe przycisku.
Jeśli przejdziesz do trybu odtwarzania, zobaczysz, że do przycisku zostanie dodany nowy składnik o nazwie Mesh Interactable Body.
Ten składnik jest dodawany automatycznie w czasie wykonywania w celu interakcji z ciałami; uwidacznia różne właściwości skryptów wizualnych, takich jak IsHovered i IsSelected, co przydaje się za chwilę.
W grafie skryptów dodajmy węzeł, który informuje nas o wybraniu przycisku.
Jeśli chcesz, zamknij tryb odtwarzania, a następnie wybierz pozycję PlayVideoButton w hierarchii , aby upewnić się, że jego graf jest widoczny w oknie Wykres skryptu.
W grafie skryptów kliknij i przytrzymaj port outportu węzła Pobierz zmienną obiektu, a następnie zwolnij przycisk myszy. Spowoduje to otwarcie narzędzia Fuzzy Finder. OSTRZEŻENIE: Po otwarciu narzędzia Rozmyte wyszukiwanie nie klikaj nigdzie poza interfejsem aparatu Unity. Spowoduje to zamknięcie narzędzia Rozmyte wyszukiwanie i powoduje nieprzewidywalne zachowanie w grafie skryptów.
Wyszukaj pozycję Jest zaznaczona, a następnie na liście wybierz pozycję Treść z możliwością interakcji z siatką: IsSelected.
Uwaga: ten węzeł zwraca wartość logiczną. Można to potwierdzić w Inspektorze grafu.
Przeciągnij łącznik z portu wyjściowego węzła Is Selected ,a następnie utwórz nowy węzeł o nazwie Microsoft Mesh: On State Changed (Stan zmieniony). (W narzędziu Fuzzy Finder wyszukaj stan zmieniony).
Są to nasze trzy węzły wykrywania kliknięcia przycisku. Węzeł Jest zaznaczony zaczyna się od wartości False, ale po kliknięciu przycisku wartość zmienia się na True i jest przekazywana do węzła On State Changed ( Zmieniono stan). Następnie ten węzeł wyzwala węzły odtwarzania/zatrzymywania, które dodamy dalej.
Odtwarzanie lub zatrzymywanie wideo
Jeśli w przypadku zmiany stanu ma wartość true, film będzie odtwarzany. Jeśli jest już odtwarzany, a przycisk jest naciśnięty, opcja Po zmianie stanu zmieni się na wartość false, a wideo przestanie być odtwarzane. Ma to wpływ na węzły w sekcji 2 wykresu skryptu, który wkrótce dodamy, aby udostępnić wideo i nadal obraz, który można wyświetlić.
Następnym krokiem jest dodanie węzła if w celu określenia przepływu.
Przeciągnij łącznik z portu wyjściowego kontrolki węzła On State Changed (Zmieniono stan), a następnie utwórz nowy węzeł if . (W narzędziu Fuzzy Finder wyszukaj frazę if).
Przeciągnij łącznik z portu danych wyjściowych węzła On State Changed (Zmieniono stan) na port wejściowy danych węzła if .
Utwórz zmienną, aby określić, czy wideo jest odtwarzane, czy nie
W tablicy Blackboard przejdź do karty Obiekt, a następnie utwórz zmienną o nazwie "isPlaying". Ustaw wartość typu "Wartość logiczna" i pozostaw pole wyboru Wartość niezaznaczone. Daje to wartość logiczną wartość domyślną false.
Przeciągnij zmienną "isPlaying" do wykresu skryptów, a następnie upuść ją z prawej strony węzła *If .
Przeciągnij łącznik z portu danych wyjściowych true control węzła If, a następnie utwórz nowy węzeł Ustaw zmienną obiektu. (W narzędziu Fuzzy Finder wyszukaj ciąg set object.).
W węźle Ustaw zmienną obiektu kliknij listę rozwijaną nazwa zmiennej, a następnie wybierz pozycję IsPlaying.
Zmienna isPlaying musi wykonywać podwójne obowiązki tutaj. Aby upewnić się, że funkcja isPlaying zawsze ma poprawną wartość, nadajmy mu dane wejściowe z węzła Negate .
Przeciągnij łącznik z dolnego portu wejściowego danych w węźle Ustaw zmienną obiektu: isPlaying , a następnie utwórz nowy węzeł Negate . (W narzędziu Fuzzy Finder wyszukaj negację).
Przeciągnij łącznik z portu Danych wejściowych węzła Negate , a następnie utwórz nowy węzeł Pobierz zmienną obiektu. (W narzędziu Fuzzy Finder wyszukaj zmienną obiektu get).
W węźle Pobierz zmienną obiektu kliknij listę rozwijaną nazwa zmiennej, a następnie wybierz pozycję IsPlaying.
Węzeł Negate powoduje zmianę wartości IsPlaying na przeciwieństwo tego, co jest obecnie ustawione. Po uruchomieniu sceny funkcja isPlaying ma wartość false (wartość domyślna). Po kliknięciu przycisku Odtwórz/Zatrzymaj węzeł Negate powoduje odtwarzanie w węźle Ustaw zmienną obiektu na wartość true i powoduje to odtwarzanie wideo. Po ponownym kliknięciu przycisku węzeł Negate spowoduje zresetowanie wartości false i spowoduje zatrzymanie wideo.
Odtwarzanie wideo lub wyświetlanie obrazu nadal
Teraz zaczniemy tworzyć sekcję 2 grafu skryptów. Dodasz węzły, które wykryją, czy funkcja isPlaying zmienia. Określa to, czy odtwarzać wideo, czy wyświetlać obraz nadal w pliku WebSlate stacji 3.1.
W dolnej części grafu dodaj węzeł Pobierz zmienną obiektu i ustaw jego wartość na isPlaying. (Możesz kliknąć prawym przyciskiem myszy wykres, a następnie wybrać polecenie Dodaj węzeł. Wyszukaj ciąg get object).)
Przeciągnij łącznik z portu wyjściowego danych zmiennej Get Object: isPlaying , a następnie utwórz nowy węzeł W stanie Zmieniony . (W narzędziu Fuzzy Finder wyszukaj stan zmieniony).
Przeciągnij łącznik z portu wyjściowego kontrolki węzła On State Changed ,a następnie utwórz nowy węzeł If . (W narzędziu Fuzzy Finder wyszukaj frazę if).
Przeciągnij łącznik z portu wyjściowego danych węzła On State Changed ,a następnie połącz go z portem wejściowym danych węzła if .
Obiekty GameObjects wideo i VideoStill (obraz)
W hierarchii rozwiń obiekt VideoPlayer GameObject i zwróć uwagę, że ma dwa obiekty podrzędne: Video i VideoStill.
Wybierz pozycję Wideo, a następnie w inspektorze zanotuj następujące kwestie:
Wideo ma składnik o nazwie Video Player, który ma link do wideo turbiny wiatrowej.
Wideo jest nieaktywne (pole wyboru obok jego nazwy jest puste).
W hierarchii wybierz obiekt VideoStill GameObject, a następnie w inspektorze zanotuj następujące elementy:
Aplikacja VideoStill ma dołączony obraz.
Aplikacja VideoStill jest aktywna (pole wyboru obok jego nazwy jest zaznaczone).
Po uruchomieniu sceny na ekranie wideo jest wyświetlany obraz nadal (ze względu na to, że aplikacja VideoStill jest aktywna) i nie odtwarza wideo (co jest spowodowane brakiem aktywności wideo). Gdy uczestnik naciska przycisk Odtwórz/Zatrzymaj podczas wyświetlania odtwarzania, powoduje , że wideo jest aktywne, co powoduje odtwarzanie wideo, a jednocześnie powoduje, że film VideoStill jest nieaktywny, co powoduje ukrycie obrazu. Etykieta przycisku również zmienia się z Odtwarzania na Zatrzymaj , Gdy uczestnik ponownie naciska przycisk, Wideo jest nieaktywne, zatrzymuje klip wideo, a videoStill jest ponownie aktywny, co sprawia, że ekran wideo będzie ponownie wyświetlać obraz.
Pozostałe węzły na naszym grafie sprawiają, że wszystko się stanie.
Tworzenie zmiennych obiektów Wideo i VideoStill (obraz)
Utwórzmy zmienne obiektu, które przechowują wartości obiektów Wideo i VideoStill GameObjects.
W hierarchii rozwiń węzeł VideoPlayer.
W narzędziu Script Graph Blackboard utwórz nową zmienną Object: wpisz nazwę "Wideo" w polu (Nowa nazwa zmiennej), a następnie kliknij przycisk "+".
Ustaw typ zmiennej obiektu na Obiekt gry.
Z hierarchii przeciągnij obiekt Video GameObject, a następnie upuść go w polu Wartość nowej zmiennej.
Na tablicy utwórz nową zmienną Object: wpisz nazwę "VideoStill" w polu (Nowa nazwa zmiennej), a następnie kliknij przycisk "+".
Ustaw typ zmiennej obiektu na Obiekt gry.
Z hierarchii przeciągnij obiekt VideoStill GameObject, a następnie upuść go w polu Wartość nowej zmiennej.
Struktura grafu skryptów
Jest to dobre miejsce, aby zatrzymać i zastanowić się, jak chcemy zaprojektować resztę sekcji 2 naszego wykresu skryptów. Nasz węzeł "If" będzie rozgałęzić się w przepływie "true" i przepływie "false". Nasze zmienne obiektu muszą być łatwo dostępne dla obu przepływów, dlatego umieścimy je w wierszu między przepływami, jak pokazano poniżej:
Dodawanie zmiennych obiektów Video i VideoStill do grafu skryptów
Przeciągnij zmienną obiektu wideo z tablicy blackboard , a następnie upuść ją w grafie skryptów, aby dodać ją jako węzeł. Umieść go w węźle If .
Przeciągnij zmienną obiektu VideoStill z tablicy blackboard , a następnie upuść ją w grafie skryptów, aby dodać ją jako węzeł. Umieść ją po prawej stronie węzła Pobierz zmienną obiektu: wideo .
Włączanie wideo
Przeciągnij łącznik z portu wyjściowego "True" kontrolki węzła If , a następnie utwórz nowy obiekt gry: ustaw aktywny węzeł. (W narzędziu Fuzzy Finder wyszukaj ciąg aktywny).
Przeciągnij łącznik z portu Danych wyjściowych węzła Pobierz zmienną obiektu: wideo , a następnie połącz go z pierwszym portem wejściowym danych obiektu gry: Ustaw aktywny węzeł.
Zaznacz pole wyboru Wartość węzła, co sprawia, że węzeł jest aktywny.
Przeciągnij łącznik z portu Danych wyjściowych węzła Pobierz zmienną obiektu: VideoStill , a następnie połącz go z pierwszym portem wejściowym danych obiektu gry: ustaw właśnie utworzony węzeł Aktywny .
Pozostaw pole wyboru Wartość węzła niezaznaczone. Gwarantuje to, że węzeł jest nieaktywny.
Teraz po kliknięciu przycisku zostanie odtwórz wideo, a obraz nadal będzie ukryty. Potrzebujemy jeszcze jednej rzeczy w tej sekwencji. Ponieważ przycisk Odtwórz/Zatrzymaj jest przełącznikiem, musimy upewnić się, że po kliknięciu przez uczestnika pozycji Odtwórz etykieta przycisku zmieni się na Zatrzymaj, a następnie po ponownym kliknięciu etykieta zmieni się z powrotem na Odtwórz. Aby to osiągnąć, musimy utworzyć i dodać zmienną obiektu, a następnie dodać węzeł TextMeshPro .
Tworzenie i dodawanie zmiennej Obiektu etykiety
W hierarchii upewnij się, że przycisk PlayVideoButton i jego obiekt podrzędny są rozwinięte.
W narzędziu Script Graph Blackboard utwórz nową zmienną Object: wpisz nazwę "Label" w polu (Nowa nazwa zmiennej), a następnie kliknij przycisk "+".
Ustaw typ zmiennej obiektu na Obiekt gry.
Z hierarchii przeciągnij obiekt GameObject etykiety, a następnie upuść go w polu Wartość nowej zmiennej.
Przeciągnij zmienną obiektu label z tablicy blackboard , a następnie upuść ją w grafie skryptów, aby dodać ją jako węzeł. Umieść ją po prawej stronie węzła Pobierz zmienną obiektu: VideoStill .
Dodawanie węzła Text Mesh Pro
Przeciągnij łącznik z portu wyjściowego kontrolki obiektu gry: Ustaw aktywny węzeł, a następnie utwórz nowy węzeł Text Mesh Pro: Set Text Text Node. (W narzędziu Fuzzy Finder wyszukaj tekst ustawiony). Umieść go w górnym wierszu po prawej stronie obiektu gry: Ustaw aktywny węzeł.
Przeciągnij łącznik z portu Danych wyjściowych węzła Pobierz zmienną obiektu: Etykieta, a następnie połącz go z górnym portem wejściowym danych w węźle Text Mesh Pro: Set Text.
W polu tekstowym węzła wpisz ciąg "Stop".
Dodawanie węzłów w celu zatrzymania wideo
Wystarczy trzy kolejne węzły, aby przejść do tego grafu! Musimy skonfigurować fałszywy warunek dla przycisku, aby po kliknięciu przycisku podczas odtwarzania wideo zmienna isPlaying stała się fałszem i powoduje zatrzymanie wideo, a etykieta przycisku zmieni się na Odtwórz ponownie.
Tutaj możemy podjąć skrót.
Kliknij trzy węzły w górnym wierszu, które składają się na przepływ "if true".
Kliknij prawym przyciskiem myszy wykres skryptu, a następnie w menu podręcznym wybierz polecenie Duplikuj zaznaczenie.
Przeciągnij zduplikowane węzły w dół na grafie i umieść je poniżej wiersza zmiennych.
Konfigurowanie węzłów "if false"
Przeciągnij łącznik z portu Danych wyjściowych węzła Pobierz zmienną obiektu: wideo , a następnie połącz go z górnym portem wejściowym danych pierwszego obiektu gry: ustaw aktywny węzeł w dolnym wierszu węzłów.
W tym samym pierwszym obiekcie gry: ustaw aktywny węzeł, usuń zaznaczenie wartości.
Przeciągnij łącznik z portu Danych wyjściowych węzła Pobierz zmienną obiektu: VideoStill , a następnie połącz go z górnym portem wejściowym danych drugiego obiektu gry: ustaw aktywny węzeł w dolnym wierszu węzłów.
W tym drugim obiekcie gry: ustaw aktywny węzeł, wybierz pozycję Wartość.
Przeciągnij łącznik z portu Danych wyjściowych węzła Pobierz zmienną obiektu: etykieta , a następnie połącz go z górnym portem wejściowym danych usługi Text Mesh Pro: ustaw węzeł Tekst po prawej stronie.
W tym samym elemecie Text Mesh Pro: ustaw węzeł Tekst , zmień tekst z Stop na Play.
Przeciągnij łącznik z portu wyjściowego "Fałsz" węzła If , a następnie połącz go z portem wejściowym sterowania pierwszego obiektu gry: ustaw aktywny węzeł w dolnym wierszu węzłów.
Udostępnianie interakcji odtwarzacza wideo z innymi osobami w środowisku
Mogą wystąpić czasy, gdy chcesz, aby zdarzenia skryptu były doświadczane tylko przez uczestnika wyzwalającego zdarzenia, a inne czasy, gdy chcesz, aby zdarzenia były doświadczane przez wszystkich w scenie. Można to kontrolować za pomocą składnika Zakres skryptu lokalnego.
W obszarze Hierarchia upewnij się, że wybrano pozycję PlayVideoButton .
W inspektorze kliknij przycisk Dodaj składnik, a następnie dodaj zakres skryptu lokalnego.
Na potrzeby tego samouczka chcemy, aby wszyscy uczestnicy w środowisku mogli zobaczyć wszelkie interakcje z odtwarzaczem wideo i zobaczyć sam film wideo odtwarzany i wstrzymany. Aby to upewnić się, upewnij się, że wybrano opcję Udostępnij zmienne skryptu wizualizacji dla tego obiektu gry. Pole informacji poniżej tej opcji informuje o tym, co jest udostępniane i co pozostaje lokalne.
Testowanie pracy
W środowisku Unity zapisz projekt, a następnie naciśnij przycisk Odtwarzania edytora aparatu Unity.
W oknie Game (Gra) kliknij przycisk Play (Odtwórz) poniżej odtwarzacza wideo. Powoduje to, że etykieta na przycisku zmieni się na Zatrzymaj i krótki film o turbinach wiatrowych do odtwarzania na ekranie powyżej przycisku.
Po zakończeniu oglądania filmu wideo naciśnij przycisk, który edytowano ponownie (ma teraz etykietę Zatrzymaj).
Naciśnij przycisk Odtwarzania edytora aparatu Unity, aby zamknąć tryb odtwarzania.
Stacja 3.2: Wyzwalanie okna dialogowego informacji
W przypadku tej funkcji ulepszymy istniejący skrypt wizualny, który powoduje wyświetlenie okna dialogowego informacji po naciśnięciu przycisku przez awatar.
W hierarchii zwiń element 3.1 — Video GameObject.
W oknie Scena zwróć uwagę, że stacja Wyzwalacz okna dialogowego informacji znajduje się po prawej stronie stacji odtwarzania wideo 3.1. Dostosuj widok, aby wyraźnie zobaczyć stację 3.2.
W obszarze Inspector (Inspektor) rozwiń obiekt GameObject o nazwie 3.2 — okno dialogowe Informacje.
W hierarchii wybierz pozycję InfoButtonWrapper.
W Inspektorze zwróć uwagę, że element InfoButtonWrapper ma dołączony składnik Zakres skryptu lokalnego i że jego zmienne skryptu wizualizacji udziału w tej opcji Obiekt gry nie są zaznaczone.
Dzieje się tak, ponieważ po kliknięciu przez uczestnika przycisku, który powoduje wyświetlenie okna dialogowego informacji, przycisk staje się dla nich ukryty. Jeśli ta opcja została wybrana, przycisk zostanie ukryty dla wszystkich w scenie i nie chcemy tego.
W inspektorze przejdź do składnika Maszyna skryptów, który zawiera graf Pokaż okno dialogowe, a następnie kliknij przycisk Edytuj graf.
Na wykresie przeciągnij łącznik z portu Danych wyjściowych true Control węzła If, a następnie utwórz nowy węzeł Microsoft Mesh: Pokaż węzeł okna dialogowego. (W narzędziu Fuzzy Finder wyszukaj okno dialogowe pokaż).
W węźle Pokaż okno dialogowe kliknij pole Komunikat , a następnie zastąp wyraz Komunikat następującym zdaniem:
Czy wiesz, że największa turbina wiatrowa na świecie ma ostrza dłuższe niż boisko piłkarskie?
Jest to komunikat, który pojawi się w oknie dialogowym informacji.
Wybierz listę rozwijaną, która aktualnie wyświetla przycisk OK, a następnie na liście podręcznej usuń zaznaczenie pozycji OK i wybierz pozycję Kontynuuj. Spowoduje to dodanie przycisku Kontynuuj do okna dialogowego informacji, które użytkownik może kliknąć, aby zamknąć okno dialogowe po zakończeniu odczytywania komunikatu.
Testowanie pracy
W edytorze aparatu Unity zapisz projekt, a następnie naciśnij przycisk Odtwarzania edytora aparatu Unity.
Użyj nawigacji, aby wrócić do awatara z dala od przycisku. Zwróć uwagę, że gdy awatar znajduje się w pewnej odległości, przycisk obraca się i nie można go wybrać.
Przejdź w kierunku przycisku. W pewnym momencie przycisk zatrzymuje obracanie się, sygnalizując, że można go teraz wybrać.
Wybierz przycisk . Zostanie wyświetlone okno dialogowe informacji i zostanie wyświetlony komunikat dodany do węzła Pokaż okno dialogowe wcześniej.
Uwaga
Wygląd okna dialogowego informacji w trybie odtwarzania różni się od tego, jak będzie on wyświetlany w mesh, gdzie będzie wyglądać podobnie jak inne panele na tarasie sphere.
Po zakończeniu pracy z oknem dialogowym informacji kliknij przycisk Kontynuuj . Pamiętaj, że po kliknięciu przycisku znika. Aby ponownie użyć przycisku, musisz zamknąć, a następnie ponownie wprowadzić tryb odtwarzania.
Napiwek
Odległość i wyzwalanie elementów w tym miejscu są określane przez składniki obiektu GameObject ProximityDetector .
Naciśnij przycisk Odtwarzania edytora aparatu Unity, aby zamknąć tryb odtwarzania.
Stacja 3.3: Teleport do generatora turbiny
W przypadku tej funkcji dodamy kilka węzłów do wykresu skryptów, który umożliwia uczestnikom w scenie teleportacje. Gdy uczestnik naciska przycisk, są teleportowani z bieżącej lokalizacji na Stacji 3.3 do podniesionej platformy, która jest przymocowana do generatora turbin wiatrowych. Następnie mogą zbadać generator.
Aktualizowanie wykresu skryptu
W oknie Scena zwróć uwagę, że stacja teleportu 3.3 - Teleport do turbiny znajduje się po prawej stronie stacji wyzwalacza okna dialogowego informacji 3.2. Dostosuj widok, aby wyraźnie zobaczyć stację 3.3.
W hierarchii zwiń element 3.2 — Info Dialog GameObject, a następnie rozwiń obiekt GameObject 3.3 — Teleport GameObject.
Przycisk jest skonfigurowany dla Ciebie--- wystarczy dodać węzły w grafie skryptów, które dają mu zachowanie teleportu.
W hierarchii rozwiń węzeł ChapterLabel GameObject, a następnie wybierz obiekt GameObject TeleportToWindTurbineButton.
Należy pamiętać, że w inspektorze istnieje składnik maszyny skryptu o nazwie Teleport to Location z dołączonym skryptem o nazwie TeleportToLocationButtonStart. Opcja Źródło jest ustawiona na Graph, co oznacza, że wykres skryptu jest przechowywany w projekcie jako niezależny plik.
Kliknij przycisk Edytuj graf. Podobnie jak w poprzednim rozdziale nasz graf ma już kilka węzłów skonfigurowanych dla Ciebie.
Na chwilę dodamy węzły do tego wykresu skryptów.
Tworzenie punktu podróży i dodawanie do niego odwołania
Więc co to jest "Punkt podróży", możesz pytać ... ? Zasadniczo jest to składnik, którego można użyć do zdefiniowania punktu w przestrzeni w celu zduplikowania lub teleportowania. Zwykle należy najpierw utworzyć grupę podróży, a następnie dodać do niej co najmniej jeden punkt podróży. Utworzyliśmy już grupę podróży dla Ciebie w tym projekcie, więc w poniższych krokach dodamy punkt podróży do tej grupy. Następnie użyjemy tego punktu podróży jako lokalizacji, do której przejdzie awatar po kliknięciu przycisku Teleport . Aby dowiedzieć się więcej, zobacz nasz artykuł o nazwie Create avatar spawn and teleport points (Tworzenie punktów duplikowania awatara i teleportowania).
W hierarchii utwórz nowy pusty obiekt GameObject jako obiekt podrzędny na TravelGroup, a następnie zmień jego nazwę na "TeleportLocationWindTurbine".
W inspektorze kliknij przycisk Dodaj składnik, a następnie wyszukaj i dodaj składnik Punkt podróży.
W inspektorze w składniku Przekształć wprowadź następujące wartości:
Position (Pozycja):
X = 6
Y = 56
Z = 60Obrót:
X = 0
Y = 255
Z = 0Awatar będzie teleportować do tej lokalizacji.
W inspektorze ustaw obiekt TeleportLocationWindTurbine GameObject jako nieaktywny, usuwając zaznaczenie pola wyboru obok jego nazwy. Jeśli w czasie wykonywania jest aktywny więcej niż jeden obiekt Programu TravelPoint, aparat Unity losowo wybiera jeden z aktywnych punktów podróży jako punkt tarła awatara. Chcemy upewnić się, że awatar duplikuje się w punkcie wskazanym przez TeleportLocationChapter3 GameObject, tak aby był jedynym aktywnym punktem podróży. W wyniku nieaktywności teleportLocationWindTurbine jest wyświetlany wygaszony w hierarchii.
Tworzenie i dodawanie zmiennej obiektu lokalizacji teleportu
Na tablicy Programu Script Graph utwórz nową zmienną Object: wpisz nazwę "TeleportLocation" w polu (Nowa nazwa zmiennej), a następnie kliknij przycisk "+".
Ustaw typ zmiennej obiektu na Obiekt gry.
Z hierarchii przeciągnij obiekt TeleportLocationWindTurbine GameObject, a następnie upuść go w polu Wartość nowej zmiennej.
Przeciągnij zmienną obiektu Przycisku z tablicy blackboard , a następnie upuść ją w grafie skryptów, aby dodać ją jako węzeł. Umieść go poniżej węzła If .
Dodawanie węzłów teleportu
Przeciągnij łącznik z portu sterowania danych wyjściowych "True" węzła If , a następnie utwórz nowy węzeł o nazwie Game Object: Set Active (Obiekt gry: ustaw jako aktywny). (W narzędziu Fuzzy Finder wyszukaj ciąg aktywny).
Przeciągnij łącznik z portu danych wyjściowych węzła Pobierz zmienną obiektu: TeleportLocation , a następnie połącz go z pierwszym portem wejściowym danych obiektu gry: Ustaw aktywny węzeł.
Wybierz opcję Wartość węzła, aby ją uaktywnić.
Dodawanie węzła Punkt podróży
Przeciągnij łącznik z portu wyjściowego kontrolki obiektu gry: ustaw aktywny węzeł, a następnie utwórz nowy węzeł o nazwie Punkt podróży: Podróż do punktu. (W Fuzzy Finder wyszukaj punkt podróży: podróż).)
Przeciągnij łącznik z portu danych wyjściowych węzła Pobierz zmienną obiektu: TeleportLocation , a następnie połącz go z portem wejściowym danych węzła Punkt podróży: podróż do punktu .
Spowoduje to ukończenie grafu.
Testowanie pracy
W edytorze aparatu Unity zapisz projekt, a następnie naciśnij przycisk Odtwarzania edytora aparatu Unity.
Przejdź do stacji 3.3, a następnie kliknij przycisk Teleport , aby teleportować do generatora turbiny wiatrowej.
W polu Informacje o generatorze 3.3 wybierz przycisk Pokaż/Ukryj generator. Okno otwiera się po stronie turbiny wiatrowej i widać generator wewnątrz.
Możesz zbliżyć się do generatora i spojrzeć. To całkiem fajne! Po zakończeniu przejdź wstecz, a następnie naciśnij przycisk Pokaż/Ukryj generator . Spowoduje to zamknięcie okna.
Przejdź do rozdziału 4
W tym momencie uczestnicy doświadczenia będą gotowi przejść do rozdziału 4 i dowiedzieć się więcej o działaniach turbin wiatrowych związanych z fizyką. Podobnie jak w rozdziale 3, istnieje taras sfery, który zawiera stacje rozdziału 4. Aby do niego przejść:
Obracaj się w przeciwnym kierunku od generatora turbin wiatrowych i przejdź w kierunku 3,3 - Przejdź do pola informacyjnego Rozdział 4 .
Naciśnij przycisk Teleportuj do rozdziału 4 .
Jak reklamowane, to umieszcza awatar przed stacjami rozdziału 4 i fizyki siatki.
Rozdział 3. Podsumowanie
W tym rozdziale użyto tworzenia skryptów wizualnych usługi Mesh w celu dodania funkcji umożliwiających uczestnikom korzystanie z następujących czynności:
Naciśnij przycisk, który powoduje, że edukacyjny film o turbinach wiatrowych grać.
Naciśnij przycisk, który wyzwala wyświetlanie okna dialogowego informacji o turbinach wiatrowych.
Naciśnij przycisk, który teleportuje uczestnika od podstaw do platformy dołączonej do generatora turbiny wiatrowej, gdzie mogą zbadać generator z bliska.