‫Cześć i witaj.
‫Na tym wykładzie będziemy badać pojęcie zmiennych lokalnych, zmiennych, które istnieją tylko w
‫ramach danej funkcji.
‫Zobaczymy, jak możemy to wykorzystać do ustawienia naszej lokalizacji na inną wartość niż ta przechowywana w
‫moim wektorze.
‫Zanurzmy się.
‫Aż do tego momentu mieliśmy do czynienia ze zmiennymi należącymi do klasy.
‫Zrobiliśmy to w Blueprint, a teraz zrobiliśmy to w C++.
‫A to oznacza, że zmienna jest żywa tak długo, jak instancja klasy.
‫Każda instancja otrzymuje własną kopię zmiennej, ale gdy instancja klasy jest aktywna, zmienna ma dwie
‫wartości.
‫Ta koncepcja, o której właśnie mówiłem, ma swoją nazwę.
‫Nazywa się zakres.
‫Oznacza to, jak długo żyje zmienna?
‫I właśnie opisałem zmienną instancji, która jest zmienną, która żyje tak długo, jak konkretna
‫instancja klasy.
‫Teraz są też inne typy zmiennych.
‫Istnieją zmienne, które żyją tak długo, jak funkcja.
‫Zasadniczo, kiedy wywołujesz konkretną funkcję, ta funkcja jest uruchamiana i jak tylko funkcja się
‫kończy, zmienna umiera.
‫Tak więc w C++, ogólnie rzecz biorąc, zmienna jest poprawna między nawiasami klamrowymi w składni.
‫Więc to dobra zasada.
‫Nie zawsze jest to dokładnie poprawne, ale funkcja tik, na przykład,
‫mamy tu kilka nawiasów klamrowych i gdybyśmy mieli zadeklarować zmienną wewnątrz tej funkcji, to istniałaby tylko raz.
‫Wywoływana jest funkcja tick i następnym razem zostanie utworzona od nowa.
‫Platforma ruchoma.
‫Jeśli to widzimy, jeśli spojrzymy na ruchomą kropkę platformy, widać, że mój
‫wektor jest deklarowany w nawiasach klamrowych należących do definicji klasy, dlatego te zmienne żyją tak
‫długo, jak instancja klasy.
‫Więc chciałbym ci to udowodnić.
‫Przejdźmy więc do ruchomej platformy kropki CP i stwórzmy w niej zmienną lokalną.
‫Więc zamierzam go stworzyć w dokładnie taki sam sposób, jak zrobiliśmy.
‫Kiedy deklarujemy błąd w nagłówku pliku, będziemy mieli wektor F, potem nazwę wektora,
‫nazwę go wektorem lokalnym.
‫A potem możemy ustawić tę wartość dokładnie podczas jej tworzenia.
‫Możemy to zrobić używając konstruktora dla wektora F lub możemy to zrobić z innej zmiennej,
‫tak jak możemy przekazać zmienną do funkcji.
‫Możemy więc przede wszystkim używać tylko metody konstruktora.
‫Więc będziemy mieć wektor F i dam mu 1 do 3, a potem średnik, koniec
‫wiersza.
‫Więc to jest teraz zmienna lokalna.
‫Istnieje tylko w ramach tej funkcji i jest resetowany za każdym razem, gdy funkcja jest wywoływana.
‫Więc gdybym miał zrobić coś takiego, gdybym miał zrobić coś takiego, jak mamy
‫w linii 29 z aktualizowanym moim wektorem, możemy mieć wektor lokalny, możemy mieć wektor lokalny kropka z równym
‫wektorowi lokalnemu kropka z plus jeden.
‫A jeśli miałbym ustawić moją lokalizację na ten lokalny wektor, będzie ona taka sama w każdej pojedynczej klatce,
‫ponieważ resetujemy i zaczynamy z tej samej lokalizacji.
‫Raz, dwa, trzy, każda funkcja tiku.
‫Tak więc ta funkcja naprawdę istnieje tylko lokalnie.
‫Więc chciałbym, abyś spróbował małego eksperymentu jako wyzwania, aby ustawić lokalny wektor z mojego wektora.
‫Więc w zasadzie zrobisz, zamiast ustawiać go z konstruktora, ustawisz go z
‫wartości, która jest obecnie w moim wektorze, która zabierze kopię tego wektora do twojego lokalnego
‫wektora.
‫Następnie chciałbym, abyś ustawił się w lokalizacji za pomocą lokalnego wektora.
‫A ponieważ próbujemy aktualizować ten lokalny wektor w każdej klatce, zobaczmy, jaki jest efekt.
‫Czy platforma się porusza?
‫Czy spodziewałbyś się, że to zrobi i wypróbujesz, skompiluj kod play i zobacz, czy rzeczywiście publikuje wideo
‫i próbuje.
‫Dobra.
‫Witamy spowrotem.
‫Więc zamiast używać konstruktora do ustawienia lokalnego wektora, ustawię zamiast tego
‫mój wektor.
‫Więc bierzemy wartość, która jest aktualnie przechowywana w moim wektorze i umieszczamy ją w
‫wektorze lokalnym, a następnie aktualizujemy wektor lokalny.
‫To powiedziawszy, zwiększamy się o jedną klatkę.
‫A potem chciałbym ustawić aktywną lokalizację zamiast z mojego wektora.
‫Zamiast tego ustawimy go z lokalnego wektora.
‫Jak myślisz, co się stanie w tym przypadku?
‫Chodźmy dalej i dowiedzmy się.
‫Nacisnę przycisk kompilacji i pójdę dalej, wcisnę odtwarzanie i zobaczę, że
‫platforma nadal przesuwa się w prawo, ale nie idzie w górę w kierunku Z.
‫Widać więc, że to tak naprawdę nie ma wpływu, zwiększenie lokalnego wektora, ponieważ jest on
‫resetowany z bieżącej wartości w moim wektorze, w każdej klatce.
‫Jednak mój wektor jest wciąż aktualizowany.
‫W każdej klatce wartość y jest zwiększana, w każdej klatce.
‫I dlatego widzimy ruch na prawo.
‫Tak więc jednym ze sposobów, w jaki możemy zobaczyć, że ta zmiana wektora lokalnego jest tylko lokalna, jest zwiększenie tej wartości
‫z jednego do może 100.
‫Więc dodajemy 100 do wartości wektora lokalnego.
‫Możemy przejść i skompilować, a następnie nacisnąć przycisk odtwarzania.
‫Zobaczycie, że platforma jest w rzeczywistości o 100 jednostek wyżej w powietrzu.
‫Poświęćmy chwilę i wysuńmy klawiszem F8 i zatrzymajmy grę przyciskiem pauzy na głównym pasku narzędzi, a
‫następnie wybierzmy poruszającą się platformę, aby spojrzeć na nią w okienku szczegółów.
‫Aby to zrobić, z jakiegoś powodu muszę go kliknąć w oknie roboczym, czasami po prostu kliknięcie go
‫w zarysie nie działa.
‫M I chciałbym wam zwrócić uwagę, że wartość w moim wektorze, wartość Z w moim wektorze jest o
‫100 jednostek mniejsza niż lokalizacja Z transformacji.
‫Widać więc, że dodanie do tego wektora lokalnego miało wpływ.
‫Mamy naszą lokalizację o 100 jednostek wyższą niż lokalizacja w moim wektorze.
‫A to, co jest naprawdę wspaniałe w zmiennych lokalnych, to to, że kiedy funkcja zakończy swoje konkretne
‫wykonanie, zostają one wyczyszczone i zresetowane.
‫Więc zawsze możesz wiedzieć, czego się spodziewać po zmiennej lokalnej.
‫Zawsze wiesz, jaka będzie w nim wartość, w przeciwieństwie do zmiennej klasy, którą można aktualizować w dowolnym
‫momencie z dowolnej innej funkcji.
‫Więc zamierzamy poddać te zmienne lokalne ich tempo podczas kilku wykładów.
‫Zanurkujmy dalej.