‫Cześć i witaj.
‫W tym wykładzie przyjrzymy się wektorom i ogólnie bardziej skomplikowanym rzeczom, takim jak struktury w
‫C++ oraz tym, jak możemy uzyskać dostęp do poszczególnych części zarówno w celu ustawienia, jak i pobrania ich ze struktury.
‫Zanurzmy się.
‫Tak więc nauczyliśmy się radzić sobie z podstawowymi typami danych w C++, tworzyć zmienne i przypisywać do nich, a nawet
‫wykonywać z nimi podstawową arytmetykę.
‫Ale co, gdybyśmy chcieli zajmować się bardziej skomplikowanymi typami, takimi jak wektory i przekształcenia?
‫Cóż, proces jest w rzeczywistości bardzo podobny.
‫Zacznijmy od wyczyszczenia części kodu testowego, który już mamy.
‫Zamierzam usunąć wszystkie moje właściwości.
‫Dla mnie to linia 26 do 51.
‫Przejdę też do pliku C++ i usunę wiersze od 19 do 23, gdzie wykonuję całą pracę
‫ze zmiennymi, które właśnie usunąłem.
‫Więc teraz Begin Play jest całkowicie pusty i wróciliśmy do punktu wyjścia.
‫Więc teraz to, co chcę zrobić, to dodać nową nieruchomość.
‫Więc znowu edytuj wersaliki w dowolnym miejscu i zamierzam nadać temu typ wektora F, zauważ wielkie litery F, duże V i
‫tak postępujemy z wektorami, z którymi mieliśmy do czynienia w Blueprint, są tymi
‫samymi wektorami pod powierzchni, ale tak to piszemy w C++.
‫Poprzedzająca ją F po prostu informuje nas, że jest to struktura w taki sam sposób, jak A poprzedzająca
‫ruchomą platformę.
‫Daje nam znać, że to jest aktor.
‫To nie jest kwestia C++.
‫To nierealna konwencja nazewnictwa różnych klas, struktur i typów.
‫Więc to, co zrobimy, to nadanie tej zmiennej jej nazwy.
‫A to działa dokładnie tak samo, jak gdyby to był pływak lub wydarzenie.
‫Możemy to na przykład nazwać moim floatem.
‫Nie musi mieć spacji.
‫A jeśli mielibyśmy wstawić średnik na końcu wiersza, to to wszystko.
‫Zadeklarowaliśmy nową zmienną, która będzie widoczna w naszym okienku szczegółów w edytorze, ale to dla mnie
‫za mało.
‫Chciałbym nadać temu domyślną wartość, która różni się od domyślnej 000.
‫Aby to zrobić, musimy zaktualizować nasz glosariusz o nowy termin.
‫Potrzebujemy konstruktora, który jest zasadniczo czymś w C++, który tworzy nową strukturę lub wartość klasy A.
‫Więc gdybyśmy mieli stworzyć konstruktor dla wektora, sposób, w jaki to zadziała, to przypisanie wartości, więc
‫trafimy na równe.
‫I zazwyczaj, gdy mamy do czynienia z liczbami całkowitymi lub zmiennoprzecinkowymi, możemy po prostu użyć czegoś takiego jak
‫jeden lub prawda, które zostały wbudowane w wartości, które pozwalają nam ustawić wartość tych podstawowych typów.
‫Ale kiedy mamy bardziej złożone typy, takie jak struktura, musimy użyć konstruktora, a konstruktor zawsze będzie miał
‫taką samą nazwę jak typ danych, więc będzie miał dokładnie taką samą pisownię wektorową.
‫Następnie otwierasz kilka nawiasów i wewnątrz nawiasów podajesz żądane wartości.
‫Więc X, Y i Z tworzą wektor.
‫Mogliśmy więc mieć jeden, dwa i trzy oddzielone przecinkami, a następnie zamknęliśmy nawiasy i wstawiliśmy
‫średnik na końcu wiersza.
‫A to da domyślną wartość jeden, dwa i trzy w X, Y i Z dla tego wektora.
‫Wypróbujmy to.
‫Wróć do Unreal i naciśnij przycisk kompilacji.
‫A kiedy zakończy się to pomyślnie, możemy upewnić się, że mamy wybraną ustawę o ruchomej platformie w naszym zarysie
‫i spojrzeć na okienko szczegółów i zobaczyć, że rzeczywiście mamy nową właściwość o nazwie My
‫Float.
‫Pozostałe zostały odjęte, a wartości w różnych pozycjach X, Y i Z to jeden, dwa i
‫trzy, tak jak się spodziewaliśmy.
‫Więc to świetnie.
‫A gdybym chciał zdobyć te wartości i umieścić je być może w innej własności?
‫Więc jeśli miałbym mieć inną właściwość, która jest oznaczona jako dodana w dowolnym miejscu, abym
‫mógł ją zobaczyć w inspektorze, wpisałem float nazwany my x i domyślnie ustawię to na zero, abyśmy mogli zobaczyć, że to zmieniamy.
‫A to, co chcę zrobić, to pobrać wartość x z mojej zmiennej zmiennoprzecinkowej na początku gry i chcę ją ustawić
‫w mojej zmiennej x.
‫Przejdźmy więc do pliku C++ i zacznijmy grać po wierszu, który mówi, że w grze jest bardzo
‫duży, ustawimy moje X równe temu, co chcemy uzyskać z mojego wektora, ale nie chcemy całości mojego
‫wektora.
‫To byłby błąd.
‫Nie możemy ustawić wektora jako zmiennoprzecinkowego, chcemy tylko części x tego wektora.
‫Aby to zrozumieć, musimy zrozumieć pojęcie operatora.
‫Operatory to symbole w C++, które coś robią.
‫Widzieliśmy już kilka.
‫Widzieliśmy operator plusa, który dodaje dwie rzeczy do siebie.
‫Jest też operator minus.
‫Jest operator równości, operator równości, który przypisuje.
‫Rzeczy.
‫Więc używamy tego tutaj, w wierszu 19.
‫To jest operator, który przypisuje wartość mojego wektora do mojego X.
‫A potem mamy jeszcze jednego operatora, którego musimy poznać, który jest operatorem DOT.
‫Jest to operator, który pobiera coś z wnętrza struktury lub klasy.
‫Więc chcemy pobrać X z mojego wektora.
‫Więc używamy operatora kropki, robimy kropkę x, teraz nie używamy spacji między moim wektorem a x.
‫Po prostu zostawiamy je razem, więc w ten sposób zwykle zostawiamy rzeczy, chociaż niekoniecznie jest to
‫błąd wstawiania spacji.
‫Więc mamy mój wektor kropka x, powinniśmy pobrać wartość x wektora i umieścić ją w my x float.
‫Więc wstawiamy tam średnik na końcu linii i jak zwykle ignoruję czerwone zawijasy, ponieważ czasami aktualizowanie ich
‫zajmuje dużo czasu, a czasami nie są poprawne.
‫A potem zajmiemy się kodowaniem na żywo, wciśniemy przycisk, który ponownie się kompiluje, i po prostu sprawdzimy,
‫czy otrzymaliśmy pomyślny wynik.
‫I nie, widzisz, mamy awarię kompilacji.
‫A jeśli spojrzysz na błąd mówiący, że mój wektor jest niezadeklarowanym identyfikatorem, a to dlatego, że
‫zrobiłem literówkę, nazwałem wektor F moim floatem i prawdopodobnie krzyczysz na ekrany.
‫Ale dobrze jest pokazać, że nawet eksperci, programiści popełniają błędy.
‫Chcieliśmy nazwać to moim wektorem, więc wrócę do pliku głównego i
‫zmienię jego nazwę na mój wektor, co powinno usunąć problem w moim mózgu.
‫Przejdźmy dalej i ponownie kliknij przycisk kompilacji.
‫A to tylko daje przedsmak tego, jak to jest, gdy popełniasz błędy, otrzymujesz błąd kompilacji.
‫To się zdarza cały czas.
‫W rzeczywistości bardzo rzadko zdarza się nie popełniać błędów.
‫Gdy zrobisz coś po raz pierwszy, przejdziemy dalej i klikniemy „odtwórz” i zobaczymy, jaką wartość otrzymamy
‫w okienku szczegółów.
‫Możesz teraz zobaczyć, że moje x zostało ustawione na jeden, ponieważ była to wartość składnika x mojej zmiennej
‫wektorowej.
‫Więc chciałbym rzucić wyzwanie, aby ustawić wartość wektora.
‫Pobieramy wartości z wektora.
‫Teraz spróbujmy je ustawić.
‫Zasadniczo spróbuj użyć operatora kropki, aby ustawić wartość.
‫Spróbuj odwrócić dwie strony tego równania tak, że zamiast tego mamy my X po prawej i mój wektor po
‫lewej stronie.
‫A co, jeśli przejdziesz na Y lub z?
‫Czy jest jakaś różnica, która ciągnie wideo i próbuje?
‫Dobra.
‫Witamy spowrotem.
‫Więc spróbuję odwrócić te dwie rzeczy.
‫Przejdźmy do C++ i zamiast tego zacznijmy grać.
‫Powiem, że mój wektor kropka y jest równy mojemu x, a następnie wstawiam średnik na końcu wiersza.
‫I w ten sposób możemy również ustawić wartości w strukturze.
‫Więc wróćmy do Unreal i przekompilujmy, a potem możemy iść dalej i ustawić jakąś wartość w moim X.
‫Wstawię tutaj wartość pięć.
‫Potem zacznę grać i rzucić okiem na okienko szczegółów ruchomej platformy.
‫I rzeczywiście, wartość y mojego wektora została zaktualizowana na początku gry o wartość w moim x.
‫Więc gratulacje.
‫Widzieliśmy, jak używać bardziej skomplikowanych typów, typów złożonych, takich jak struktury w C++.
‫Do zobaczenia na następnym wykładzie.