‫Hej, witaj z powrotem.
‫W ostatnim filmie nauczyliśmy się kilku nowych specyfikatorów właściwości, które pozwalają nam w określony sposób prezentować
‫nasze zmienne C++ w panelu szczegółów w planach.
‫W tym filmie nauczymy się więcej specyfikatorów, które pozwolą nam mieć większą kontrolę nad dostępem do
‫tych zmiennych.
‫W panelu szczegółów omówimy również, w jaki sposób możemy zezwolić na dostęp, odczyt lub
‫zapis na rzeczywistym wykresie zdarzeń dla określonej zmiennej C++.
‫Więc zanurkujmy od razu.
‫Dobra.
‫Wróciłem więc do kodu VS i oto zmienne, które stworzyliśmy w ostatnim filmie.
‫Oto moja zmienna prędkości.
‫To było na wyzwanie.
‫Prawdopodobnie utworzyłeś inną zmienną, co jest w porządku, więc zachowaj tam tę zmienną.
‫W tym filmie zrobimy z nim więcej rzeczy.
‫Teraz nauczyliśmy się, że możemy sprawić, by zmienna była widoczna w dowolnym miejscu, a kiedy mówimy gdziekolwiek,
‫mamy na myśli panel szczegółów, albo na instancji, albo na domyślnym planie.
‫Widzieliśmy, że możemy go również edytować w dowolnym miejscu, a kiedy używamy tylko widocznej instancji, jest ona widoczna tylko
‫na instancji.
‫Nie możesz go nawet zobaczyć na domyślnym planie, aw każdym razie nie możesz go edytować, ponieważ jest
‫wyszarzony.
‫Dzięki temu możemy sprawić, by nasza zmienna była widoczna tylko na instancji.
‫A co, jeśli chcielibyśmy, aby było to widoczne tylko na domyślnym planie?
‫Cóż, na to też jest specyfikator.
‫Zróbmy kolejny w 32 i nazwijmy to widocznymi wartościami domyślnymi tylko int.
‫I możemy zainicjować to do wartości.
‫Dam mu pięć i damy mu również własność U.
‫A specyfikacja ma na celu uczynienie tego widocznym tylko w ustawieniach domyślnych.
‫Prawdopodobnie możesz się domyślić, co to jest.
‫Widoczne są tylko wartości domyślne.
‫Więc zamierzam to skompilować i wracając tutaj w edytorze, ponownie otworzę BP Pond Tank.
‫A przy samodzielnym wyborze BP Pond Tank, wszystkie nasze zmienne znajdują się na górze, więc nie będę
‫ich szukać.
‫Ale oto nasze widoczne wartości domyślne tylko int i ma wartość pięć i oczywiście jest teraz wyszarzone, jak sugeruje
‫nazwa, jest widoczne tylko w przypadku wartości domyślnych.
‫Więc jeśli pójdę w świat i wybiorę tutaj jedną z instancji BP pond tank, nie ma widocznych wartości domyślnych,
‫tylko int nie jest widoczny na instancji, tylko na domyślnych.
‫Więc to ma teraz sens.
‫Wróćmy do kodu VS i mamy jeszcze kilka specyfikatorów do poznania.
‫Teraz widzieliśmy, że możemy edytować w dowolnym miejscu i że dzięki naszym widocznym specyfikatorom możemy wybrać tylko
‫instancję lub tylko domyślne.
‫Jak zapewne zgadłeś, możemy edytować tylko instancję lub tylko domyślne, jeśli tak zdecydujemy.
‫Więc zróbmy jeszcze kilka w 30 dwójkach.
‫Zamierzam utworzyć jedną o nazwie edit defaults only int i zainicjować ją do wartości powiedzmy dziewięć, a
‫następnie inną int 32 o nazwie edit instance only int.
‫I dam temu wartość 14.
‫Dlatego chcemy, aby edycja wartości domyślnych tylko int była edytowalna tylko na wartościach domyślnych i tylko na instancji oraz aby
‫była edytowalna tylko na instancji.
‫Teraz nazwy tych specyfikatorów są dość spójne, więc chciałbym, abyście po prostu zgadywali, jakie będą
‫specyfikatory dla tych dwóch poziomów dostępu.
‫Śmiało i po prostu zrób krótkie mini wyzwanie.
‫Zatrzymaj wideo i wypełnij je, zobacz, czy masz rację.
‫Ok, więc będą to twoje właściwości i edytuj ustawienia domyślne.
‫Tylko koniec sprawi, że prawdopodobnie zgadłeś.
‫Edytuj tylko wartości domyślne, a dla instancji edycji tylko int dam temu makro właściwości u, a to
‫będzie tylko instancja edycji.
‫Więc jest to całkiem intuicyjne.
‫Przejdźmy dalej i skompilujmy je i wróćmy tutaj w edytorze z BP -- tank open, tutaj są nasze domyślne
‫ustawienia edycji int nie widzimy tylko instancji edycji i nie spodziewaliśmy się, że jest ustawiona na dziewięć tutaj
‫możemy to zmienić i jeśli idziemy w świat z wybraną jedną z naszych instancji, widzimy tylko instancję edycji int
‫i oczywiście jest to również edytowalne.
‫Dodaliśmy więc teraz do naszego wykresu trzy nowe specyfikatory.
‫Mamy widoczne tylko wartości domyślne, które znajdują się tylko w domyślnej kolumnie i w wierszu tylko do odczytu.
‫A potem mamy tylko edycję wartości domyślnych i edycję instancji tylko w odpowiednich wierszach.
‫Więc zapełniamy ten wykres dość szybko, ale zauważysz, że po prawej stronie
‫jest kilka pustych miejsc i kolumna wykresu zdarzeń.
‫Porozmawiajmy o nich teraz przez chwilę.
‫Jestem tutaj, w BP Pond Tank, i mamy wszystkie te zmienne, które poddaliśmy szczegółom, panele, w zależności
‫od ich specyfikacji.
‫Możesz je zobaczyć tutaj lub na instancji.
‫Ale co, jeśli kliknę prawym przyciskiem myszy tutaj na wykresie zdarzeń?
‫Wykres zdarzeń to kolejne miejsce, w którym możemy uzyskać dostęp do zmiennych i potencjalnie je zmienić.
‫Więc jeśli wpiszę edit gdziekolwiek, nie widzę edycji nigdzie.
‫INT nie jest narażony na wykres zdarzeń.
‫Nie mamy do tego dostępu.
‫Istnieją jeszcze inne specyfikatory, które pozwalają nam uwidocznić elementy tutaj na wykresie zdarzeń i
‫które mogą działać w połączeniu ze specyfikatorami kontrolującymi dostępność panelu szczegółów.
‫I chciałbym udostępnić jedną z tych zmiennych na wykresie zdarzeń.
‫Teraz mógłbym wybrać dowolny z nich, ale wybiorę to widoczne w dowolnym miejscu.
‫INT Teraz U.
‫Makro właściwości może przyjmować wiele danych wejściowych, więc mamy widoczne wszędzie.
‫Nadal możemy to mieć.
‫Zamierzam umieścić przecinek i chciałbym dodać inny określony, który da widoczne w dowolnym
‫miejscu ekspozycję na wykres zdarzeń.
‫Więc to, czego zamierzam użyć, to czytanie, pisanie, czytanie planu.
‫Write ma związek z wykresem zdarzeń.
‫Nie ma to nic wspólnego z kontrolą panelu szczegółów.
‫Po to jest to widoczne wszędzie.
‫Tak więc Blueprint Rewrite, jak sama nazwa wskazuje, zapewnia dostęp do odczytu i zapisu.
‫Zobaczmy więc, jak to wygląda.
‫Skompilujmy to i wrócę do edytora na wykresie zdarzeń, jeśli kliknę prawym przyciskiem myszy i wpiszę widoczne w
‫dowolnym miejscu.
‫Zobaczymy, jak dwie różne opcje będą widoczne w dowolnym miejscu int i ustawione jako widoczne w dowolnym miejscu.
‫INT Jeśli wybierzesz, bądź widoczny w dowolnym miejscu.
‫INT Otrzymujemy węzeł, który jest jak każdy inny węzeł schematu, reprezentuje tę zmienną C++ i jeśli przeciągniemy
‫to, możemy uzyskać dostęp do tej wartości, aby coś z nią zrobić.
‫Teraz przejdę do przewijania i zobaczysz, że mamy te wyszarzone elementy aktora początku, nakładania się i
‫znacznika zdarzenia, a Początek odtwarzania jest wywoływany na początku gry, jak wiesz.
‫Więc możemy coś tutaj zrobić.
‫Chciałbym użyć węzła print string i jeśli przeciągnę i wpiszę print string, to tutaj jest.
‫Jest to węzeł funkcji wzorca i pobiera dane wejściowe wywołane w ciągu.
‫Teraz, jeśli najadę na niego, wyświetli się napis, a następnie napis tuż pod nim.
‫Jest to typ, który ten węzeł akceptuje jako parametr wejściowy.
‫I wiemy, że nasze widoczne gdziekolwiek int to int 32, a nie łańcuch.
‫Ale jeśli klikniesz z wyjścia tej notatki i przeciągniesz ją i włożysz tutaj w dane wejściowe, zanim zwolnisz
‫lewy przycisk myszy, zobaczysz wyskakujące okienko z napisem przekonwertuj liczbę całkowitą na ciąg, a jeśli
‫zwolnisz, otrzymasz ten przydatny węzeł konwersji konwertuje z liczby całkowitej na łańcuch, co jest dla nas bardzo
‫przydatne, ponieważ nie musimy wymyślać, jak zamienić liczbę całkowitą na łańcuch.
‫To dla nas po prostu automatyczne.
‫Teraz, jeśli nacisnę Play, zobaczymy wartość 12 wydrukowaną trzy razy i będzie to trwało tylko kilka sekund.
‫To jest zachowanie napisu print.
‫Powodem, dla którego widzimy to trzy razy, jest to, że mam trzy różne przypadki zbiornika BP
‫na świecie.
‫W zależności od tego, ile przyciągnąłeś na świat, zobaczysz ich tak wielu.
‫Ponieważ dla każdej z tych indywidualnych instancji rozpoczęcie gry jest wywoływane na początku
‫gry.
‫Aby uniknąć zamieszania, usunę moje pozostałe dwa i zostawię jedną instancję Beep
‫Pond Tank na świecie.
‫Więc mam tylko jeden i jeśli pójdę i ponownie wcisnę odtwarzanie, to na ekranie zobaczę 12 tylko raz.
‫Czyli jest to dostęp do odczytu do widocznego w dowolnym miejscu int, ale widzieliśmy, że mamy również dostęp do zapisu.
‫Oznacza to, że możemy ustawić jego wartość z tego miejsca na wykresie zdarzeń.
‫Więc jeśli kliknę prawym przyciskiem myszy i ponownie wpiszę widoczne w dowolnym miejscu int, mogę wybrać zestaw widoczny w dowolnym miejscu
‫int i mam węzeł ustawiający, który pobiera dane wejściowe, które możemy przekazać w wartości z innego węzła lub możemy
‫wziąć to małe pole tekstowe i twardy kod wartości, powiedzmy 66.
‫A teraz, gdy tylko przepływ egzekucji od początku gry dotrze do tego węzła,
‫wtedy węzeł ustawiający zapisze do widocznego w dowolnym miejscu i ustawi jego wartość na 66.
‫I oczywiście możemy to ponownie wydrukować.
‫Więc użyję print string.
‫A dla wartości przekazanej do napisu wydruku chciałbym, aby wartość widoczna w dowolnym miejscu int.
‫Teraz mogę to zrobić na dwa sposoby.
‫Setter ma węzeł powrotu, więc po ustawieniu wartości, zwraca tę wartość, a my możemy jej użyć,
‫aby móc ją podłączyć bezpośrednio do wydruku.
‫Innym sposobem jest po prostu kliknięcie prawym przyciskiem myszy i wyświetlenie się w dowolnym miejscu, w którym znajduje się węzeł
‫pobierania, i możemy podłączyć wartość z tego węzła bezpośrednio do napisu, który zrobi dokładnie to samo.
‫Więc tego nie potrzebuję.
‫Zamierzam usunąć ten węzeł.
‫A teraz spodziewam się zobaczyć, kiedy gram w tę grę, najpierw wypiszę wartość widocznego w dowolnym miejscu
‫int, która zaczyna się od 12, a następnie po ustawieniu jej wartości na 66, powinienem zobaczyć wartość 66 wypisz ją
‫do ekran.
‫Zagrajmy więc i zobaczymy 12 i 66.
‫Teraz wyglądają, jakby były w odwrotnej kolejności.
‫Dzieje się tak, ponieważ napis print dodaje nowsze wiadomości na górze.
‫To jest normalne zachowanie.
‫Okej świetnie.
‫Widzieliśmy więc, że możemy teraz odczytać plan zmiennej.
‫Możemy również kontrolować, czy możemy to ustawić z wykresu zdarzeń.
‫Pokażmy więc inną zmienną, abyśmy mogli ją pobrać z planów, ale nie ustawiajmy jej nigdzie w edycji.
‫INT Dodam teraz przecinek i dodam do niego określony, aby mieć do niego dostęp w grafie zdarzeń, ale nie
‫będę mógł go ustawić ani do niego zapisywać.
‫Określona godzina jest tylko do odczytu planu, więc edycja gdziekolwiek int jest teraz tylko do odczytu planu.
‫Nadal można go edytować w panelu szczegółów, zarówno w domyślnym, jak i w instancjach, ale na wykresie zdarzeń jest tylko
‫do odczytu.
‫Więc chodźmy dalej i skompilujmy to iz powrotem tutaj w edytorze, kliknę prawym przyciskiem myszy na wykresie
‫zdarzeń, wpiszę edit w dowolnym miejscu i sprawdzę to.
‫Pobieramy edycję w dowolnym miejscu end, ale nie mamy ustawionej edycji nigdzie int, ponieważ jest to plan tylko do
‫odczytu, nie możemy do niego pisać.
‫Więc ja to wybiorę.
‫Tutaj możesz edytować w dowolnym miejscu.
‫INT A gdybym chciał, mógłbym użyć węzła print string, aby zobaczyć jego wartość.
‫Nie musisz tego robić.
‫Już wiemy, jak to zrobić.
‫Pokazuję tylko, że nie możemy pisać do tej zmiennej.
‫Ok, więc zamierzam śmiało podświetlić te węzły i je usunąć.
‫Więc nasz wykres jest teraz wypełniony.
‫Nauczyliśmy się, że możemy sprawić, by nasze zmienne były widoczne tylko na ustawieniach domyślnych i możemy je edytować
‫tylko na ustawieniach domyślnych lub tylko na instancji.
‫Tak więc naprawdę mamy pełną kontrolę od strony C++.
‫Teraz widzieliśmy również, że możemy uwidocznić te zmienne na wykresie zdarzeń i sprawić, by były tylko do odczytu lub
‫do odczytu, używając tych specyfikatorów schematu tylko do odczytu i odczytu i zapisu.
‫Więc teraz masz wyzwanie.
‫W ostatnim wykładzie stworzyliśmy zmienną.
‫Zrobiłem spławik i nazwałem to szybkością.
‫Teraz weźmiesz tę zmienną.
‫Tworzysz go w ostatniej sekcji i kontrolujesz jego dostęp na wykresie zdarzeń.
‫Więc wyeksponuj go na wykresie zdarzeń, używając jednego z nowych specyfikatorów, których się nauczyłeś, a następnie
‫przetestujesz dla tego dostęp do odczytu i zapisu.
‫Użyj węzła napisowego, aby zobaczyć jego wartość, a jeśli ją zmienisz, udowodnij sobie, że
‫ją zmieniłeś.
‫Więc jeśli sprawisz, że twój plan zmiennej zostanie poprawnie odczytany, spróbuj zmienić go za pomocą węzła set, a następnie użyj
‫węzła print string, aby zobaczyć jego wartość za pomocą zdarzenia rozpoczynającego odtwarzanie.
‫Jeśli ustawiłeś plan tylko do odczytu, możesz po prostu pobrać wartość i wydrukować jej wartość za pomocą
‫napisu.
‫Dodaj więc poprawną specyfikację do zmiennej niestandardowej i użyj ciągu drukowania, aby przetestować dostęp do wykresu
‫zdarzeń.
‫Zatrzymaj wideo i spróbuj.
‫Dobra.
‫Więc zamierzam przewinąć w dół do mojej zmiennej prędkości, a moja zmienna prędkości jest edytowana w dowolnym miejscu i chciałbym, aby
‫była to odczytana z planu.
‫Tak, więc mogę to zmienić z poziomu wykresu zdarzeń.
‫Więc zamierzam dodać plan, czytać, pisać i po prostu skompilować.
‫Więc z powrotem w zbiorniku stawu BP, jeśli wpiszę teraz prędkość, zobaczę w tym celu getter i setter.
‫Więc użyję ustawionej prędkości.
‫Ustawię jego wartość z Begin Play.
‫Więc połączmy to.
‫A jako wartość wprowadzę 900 i z nuty zestawu, jeśli przeciągnę, mogę wpisać print string.
‫Teraz kliknę i przeciągnę węzeł wyjściowy, podłączę go do łańcucha.
‫Więc jeśli wcisnę Play, jest 900, zauważ, że mówi 900. 0.
‫To dlatego, że to jest pływak.
‫Dzięki uprzejmości pokazuje mi to pierwszy przecinek po przecinku.
‫To całkiem fajna wbudowana funkcja.
‫Pokazuje mi jedną cyfrę na prawo od przecinka dla mojej zmiennej prędkości.
‫Podsumowując, nauczyliśmy się więcej specyfikatorów dla nowego makra właściwości.
‫Nauczyliśmy się tylko widocznych wartości domyślnych, tylko edycji wartości domyślnych i edycji tylko instancji.
‫Dowiedzieliśmy się również, jak możemy kontrolować dostęp do odczytu i zapisu na wykresie zdarzeń za pomocą Blueprint, odczytu,
‫zapisu i Blueprint Read.
‫Tylko programista C++ ma dużą kontrolę nad tym, co zostanie ujawnione i co można zmienić w planie
‫oraz gdzie będziemy ich używać w tej części kursu.
‫Będziesz ich używać przez całą swoją karierę jako nierealny programista silników.
‫Do zobaczenia na następnym wykładzie.