﻿1
00:00:04,370 --> 00:00:05,210
‫Cześć i witaj.

2
00:00:05,210 --> 00:00:10,250
‫Na tym wykładzie będziemy badać pojęcie zmiennych lokalnych, zmiennych, które istnieją tylko w

3
00:00:10,250 --> 00:00:11,750
‫ramach danej funkcji.

4
00:00:12,080 --> 00:00:19,970
‫Zobaczymy, jak możemy to wykorzystać do ustawienia naszej lokalizacji na inną wartość niż ta przechowywana w

5
00:00:19,970 --> 00:00:21,380
‫moim wektorze.

6
00:00:21,530 --> 00:00:22,190
‫Zanurzmy się.

7
00:00:22,730 --> 00:00:28,340
‫Aż do tego momentu mieliśmy do czynienia ze zmiennymi należącymi do klasy.

8
00:00:28,580 --> 00:00:31,520
‫Zrobiliśmy to w Blueprint, a teraz zrobiliśmy to w C++.

9
00:00:31,910 --> 00:00:37,130
‫A to oznacza, że zmienna jest żywa tak długo, jak instancja klasy.

10
00:00:37,130 --> 00:00:43,190
‫Każda instancja otrzymuje własną kopię zmiennej, ale gdy instancja klasy jest aktywna, zmienna ma dwie

11
00:00:43,190 --> 00:00:43,820
‫wartości.

12
00:00:44,030 --> 00:00:47,660
‫Ta koncepcja, o której właśnie mówiłem, ma swoją nazwę.

13
00:00:47,660 --> 00:00:48,830
‫Nazywa się zakres.

14
00:00:49,430 --> 00:00:52,640
‫Oznacza to, jak długo żyje zmienna?

15
00:00:52,640 --> 00:00:59,450
‫I właśnie opisałem zmienną instancji, która jest zmienną, która żyje tak długo, jak konkretna

16
00:00:59,450 --> 00:01:00,470
‫instancja klasy.

17
00:01:00,950 --> 00:01:03,830
‫Teraz są też inne typy zmiennych.

18
00:01:03,830 --> 00:01:07,430
‫Istnieją zmienne, które żyją tak długo, jak funkcja.

19
00:01:07,430 --> 00:01:13,160
‫Zasadniczo, kiedy wywołujesz konkretną funkcję, ta funkcja jest uruchamiana i jak tylko funkcja się

20
00:01:13,160 --> 00:01:14,720
‫kończy, zmienna umiera.

21
00:01:15,200 --> 00:01:23,660
‫Tak więc w C++, ogólnie rzecz biorąc, zmienna jest poprawna między nawiasami klamrowymi w składni.

22
00:01:23,660 --> 00:01:25,470
‫Więc to dobra zasada.

23
00:01:25,470 --> 00:01:31,460
‫Nie zawsze jest to dokładnie poprawne, ale funkcja tik, na przykład,

24
00:01:31,460 --> 00:01:39,710
‫mamy tu kilka nawiasów klamrowych i gdybyśmy mieli zadeklarować zmienną wewnątrz tej funkcji, to istniałaby tylko raz.

25
00:01:39,710 --> 00:01:43,820
‫Wywoływana jest funkcja tick i następnym razem zostanie utworzona od nowa.

26
00:01:44,480 --> 00:01:45,950
‫Platforma ruchoma.

27
00:01:45,980 --> 00:01:52,130
‫Jeśli to widzimy, jeśli spojrzymy na ruchomą kropkę platformy, widać, że mój

28
00:01:52,130 --> 00:01:59,540
‫wektor jest deklarowany w nawiasach klamrowych należących do definicji klasy, dlatego te zmienne żyją tak

29
00:01:59,540 --> 00:02:02,210
‫długo, jak instancja klasy.

30
00:02:02,420 --> 00:02:04,580
‫Więc chciałbym ci to udowodnić.

31
00:02:04,580 --> 00:02:11,060
‫Przejdźmy więc do ruchomej platformy kropki CP i stwórzmy w niej zmienną lokalną.

32
00:02:11,240 --> 00:02:14,870
‫Więc zamierzam go stworzyć w dokładnie taki sam sposób, jak zrobiliśmy.

33
00:02:15,110 --> 00:02:20,840
‫Kiedy deklarujemy błąd w nagłówku pliku, będziemy mieli wektor F, potem nazwę wektora,

34
00:02:20,840 --> 00:02:22,850
‫nazwę go wektorem lokalnym.

35
00:02:23,810 --> 00:02:27,920
‫A potem możemy ustawić tę wartość dokładnie podczas jej tworzenia.

36
00:02:28,190 --> 00:02:32,810
‫Możemy to zrobić używając konstruktora dla wektora F lub możemy to zrobić z innej zmiennej,

37
00:02:32,930 --> 00:02:35,510
‫tak jak możemy przekazać zmienną do funkcji.

38
00:02:35,510 --> 00:02:38,810
‫Możemy więc przede wszystkim używać tylko metody konstruktora.

39
00:02:38,810 --> 00:02:45,410
‫Więc będziemy mieć wektor F i dam mu 1 do 3, a potem średnik, koniec

40
00:02:45,410 --> 00:02:46,010
‫wiersza.

41
00:02:46,010 --> 00:02:48,160
‫Więc to jest teraz zmienna lokalna.

42
00:02:48,170 --> 00:02:54,830
‫Istnieje tylko w ramach tej funkcji i jest resetowany za każdym razem, gdy funkcja jest wywoływana.

43
00:02:55,190 --> 00:03:01,190
‫Więc gdybym miał zrobić coś takiego, gdybym miał zrobić coś takiego, jak mamy

44
00:03:01,190 --> 00:03:09,350
‫w linii 29 z aktualizowanym moim wektorem, możemy mieć wektor lokalny, możemy mieć wektor lokalny kropka z równym

45
00:03:09,350 --> 00:03:12,470
‫wektorowi lokalnemu kropka z plus jeden.

46
00:03:13,040 --> 00:03:22,010
‫A jeśli miałbym ustawić moją lokalizację na ten lokalny wektor, będzie ona taka sama w każdej pojedynczej klatce,

47
00:03:22,010 --> 00:03:26,180
‫ponieważ resetujemy i zaczynamy z tej samej lokalizacji.

48
00:03:26,180 --> 00:03:28,880
‫Raz, dwa, trzy, każda funkcja tiku.

49
00:03:28,880 --> 00:03:31,520
‫Tak więc ta funkcja naprawdę istnieje tylko lokalnie.

50
00:03:31,670 --> 00:03:38,810
‫Więc chciałbym, abyś spróbował małego eksperymentu jako wyzwania, aby ustawić lokalny wektor z mojego wektora.

51
00:03:38,810 --> 00:03:43,550
‫Więc w zasadzie zrobisz, zamiast ustawiać go z konstruktora, ustawisz go z

52
00:03:43,550 --> 00:03:49,460
‫wartości, która jest obecnie w moim wektorze, która zabierze kopię tego wektora do twojego lokalnego

53
00:03:49,460 --> 00:03:49,940
‫wektora.

54
00:03:50,570 --> 00:03:54,320
‫Następnie chciałbym, abyś ustawił się w lokalizacji za pomocą lokalnego wektora.

55
00:03:54,650 --> 00:04:00,350
‫A ponieważ próbujemy aktualizować ten lokalny wektor w każdej klatce, zobaczmy, jaki jest efekt.

56
00:04:00,350 --> 00:04:01,580
‫Czy platforma się porusza?

57
00:04:01,580 --> 00:04:07,850
‫Czy spodziewałbyś się, że to zrobi i wypróbujesz, skompiluj kod play i zobacz, czy rzeczywiście publikuje wideo

58
00:04:07,850 --> 00:04:08,870
‫i próbuje.

59
00:04:11,950 --> 00:04:12,580
‫Dobra.

60
00:04:12,580 --> 00:04:13,570
‫Witamy spowrotem.

61
00:04:13,600 --> 00:04:19,480
‫Więc zamiast używać konstruktora do ustawienia lokalnego wektora, ustawię zamiast tego

62
00:04:19,510 --> 00:04:20,920
‫mój wektor.

63
00:04:21,220 --> 00:04:28,330
‫Więc bierzemy wartość, która jest aktualnie przechowywana w moim wektorze i umieszczamy ją w

64
00:04:28,900 --> 00:04:32,800
‫wektorze lokalnym, a następnie aktualizujemy wektor lokalny.

65
00:04:32,800 --> 00:04:36,520
‫To powiedziawszy, zwiększamy się o jedną klatkę.

66
00:04:36,850 --> 00:04:40,930
‫A potem chciałbym ustawić aktywną lokalizację zamiast z mojego wektora.

67
00:04:40,930 --> 00:04:44,770
‫Zamiast tego ustawimy go z lokalnego wektora.

68
00:04:45,580 --> 00:04:48,880
‫Jak myślisz, co się stanie w tym przypadku?

69
00:04:48,910 --> 00:04:50,980
‫Chodźmy dalej i dowiedzmy się.

70
00:04:50,980 --> 00:04:56,590
‫Nacisnę przycisk kompilacji i pójdę dalej, wcisnę odtwarzanie i zobaczę, że

71
00:04:56,590 --> 00:05:03,100
‫platforma nadal przesuwa się w prawo, ale nie idzie w górę w kierunku Z.

72
00:05:03,100 --> 00:05:09,460
‫Widać więc, że to tak naprawdę nie ma wpływu, zwiększenie lokalnego wektora, ponieważ jest on

73
00:05:09,760 --> 00:05:14,380
‫resetowany z bieżącej wartości w moim wektorze, w każdej klatce.

74
00:05:14,830 --> 00:05:17,320
‫Jednak mój wektor jest wciąż aktualizowany.

75
00:05:17,320 --> 00:05:19,780
‫W każdej klatce wartość y jest zwiększana, w każdej klatce.

76
00:05:19,780 --> 00:05:22,630
‫I dlatego widzimy ruch na prawo.

77
00:05:22,900 --> 00:05:31,540
‫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

78
00:05:31,540 --> 00:05:33,610
‫z jednego do może 100.

79
00:05:33,820 --> 00:05:38,350
‫Więc dodajemy 100 do wartości wektora lokalnego.

80
00:05:38,800 --> 00:05:42,280
‫Możemy przejść i skompilować, a następnie nacisnąć przycisk odtwarzania.

81
00:05:42,850 --> 00:05:47,680
‫Zobaczycie, że platforma jest w rzeczywistości o 100 jednostek wyżej w powietrzu.

82
00:05:47,680 --> 00:05:55,600
‫Poświęćmy chwilę i wysuńmy klawiszem F8 i zatrzymajmy grę przyciskiem pauzy na głównym pasku narzędzi, a

83
00:05:55,600 --> 00:06:01,750
‫następnie wybierzmy poruszającą się platformę, aby spojrzeć na nią w okienku szczegółów.

84
00:06:01,750 --> 00:06:06,340
‫Aby to zrobić, z jakiegoś powodu muszę go kliknąć w oknie roboczym, czasami po prostu kliknięcie go

85
00:06:06,340 --> 00:06:07,510
‫w zarysie nie działa.

86
00:06:07,510 --> 00:06:17,380
‫M I chciałbym wam zwrócić uwagę, że wartość w moim wektorze, wartość Z w moim wektorze jest o

87
00:06:17,380 --> 00:06:21,790
‫100 jednostek mniejsza niż lokalizacja Z transformacji.

88
00:06:22,090 --> 00:06:26,970
‫Widać więc, że dodanie do tego wektora lokalnego miało wpływ.

89
00:06:26,980 --> 00:06:34,120
‫Mamy naszą lokalizację o 100 jednostek wyższą niż lokalizacja w moim wektorze.

90
00:06:34,150 --> 00:06:39,280
‫A to, co jest naprawdę wspaniałe w zmiennych lokalnych, to to, że kiedy funkcja zakończy swoje konkretne

91
00:06:39,280 --> 00:06:41,440
‫wykonanie, zostają one wyczyszczone i zresetowane.

92
00:06:41,440 --> 00:06:44,230
‫Więc zawsze możesz wiedzieć, czego się spodziewać po zmiennej lokalnej.

93
00:06:44,500 --> 00:06:50,650
‫Zawsze wiesz, jaka będzie w nim wartość, w przeciwieństwie do zmiennej klasy, którą można aktualizować w dowolnym

94
00:06:50,710 --> 00:06:52,660
‫momencie z dowolnej innej funkcji.

95
00:06:52,720 --> 00:06:57,160
‫Więc zamierzamy poddać te zmienne lokalne ich tempo podczas kilku wykładów.

96
00:06:57,160 --> 00:06:58,360
‫Zanurkujmy dalej.

