﻿1
00:00:04,400 --> 00:00:05,180
‫Cześć i witaj.

2
00:00:05,180 --> 00:00:10,070
‫W tym wykładzie przyjrzymy się specjalnej funkcji zwanej konstruktorem, która pozwala

3
00:00:10,070 --> 00:00:13,640
‫nam nadawać domyślne wartości właściwościom w naszej klasie.

4
00:00:13,850 --> 00:00:16,760
‫Zobaczymy, kiedy zostanie wywołany w edytorze.

5
00:00:16,790 --> 00:00:18,590
‫Zanurzmy się i dowiedzmy się.

6
00:00:19,460 --> 00:00:25,400
‫Teraz, z tym komponentem wyzwalacza, chciałbym dodać tutaj funkcję komponentu tick, abyśmy

7
00:00:25,400 --> 00:00:32,420
‫mogli sprawdzić, które komponenty, które inne aktorzy obecnie nakładają się na ten komponent wyzwalacza i

8
00:00:32,420 --> 00:00:36,740
‫moglibyśmy aktywować, jeśli jest to właściwy rodzaj aktora.

9
00:00:37,610 --> 00:00:39,860
‫Problem polega na tym, że zobaczymy w czym jest problem.

10
00:00:39,860 --> 00:00:46,160
‫Spróbujmy zaimplementować funkcję tik, jeśli przejdziemy do chwytania, aby zobaczyć, jak powinna wyglądać

11
00:00:46,160 --> 00:00:50,420
‫deklaracja funkcji składowej, musi być w sekcji public.

12
00:00:50,720 --> 00:00:53,420
‫To wirtualna pustka, elementy tiku, czas delta.

13
00:00:53,420 --> 00:00:55,700
‫Jest wiele parametrów, więc po prostu skopiujmy.

14
00:00:56,070 --> 00:01:04,190
‫Przejdź do nagłówka komponentu tiku, dodaj go pod naszym początkiem odtwarzania, a następnie skopiujemy tę

15
00:01:04,490 --> 00:01:09,470
‫definicję i przejmiemy ją do kroku komponentu wyzwalacza.

16
00:01:10,010 --> 00:01:13,250
‫I jedna rzecz, którą zauważysz, to kilka kluczowych słów, które możemy usunąć.

17
00:01:13,250 --> 00:01:15,080
‫Możemy usunąć wirtualne słowo kluczowe.

18
00:01:15,080 --> 00:01:17,000
‫To generalnie zasada, której możemy się trzymać.

19
00:01:17,000 --> 00:01:19,370
‫Możemy również usunąć słowo kluczowe override.

20
00:01:19,370 --> 00:01:21,830
‫To są rzeczy, które nie muszą znajdować się w pliku C++.

21
00:01:22,310 --> 00:01:24,710
‫Musimy dodać nazwę klasy.

22
00:01:24,710 --> 00:01:33,020
‫Wypróbuj składnik dwukropek, dwukropek, a następnie zastępujemy nasz średnik kilkoma nawiasami klamrowymi i musimy

23
00:01:33,020 --> 00:01:35,840
‫wywołać składnik super tika.

24
00:01:35,840 --> 00:01:43,400
‫Więc ponieważ jest to dość długa rozmowa, skopiuję ją z, wezmę kopię i wkleję ją do tego.

25
00:01:43,400 --> 00:01:49,010
‫Teraz to, co robi, to zasadniczo wywoływanie funkcji składnika tiku rodzica.

26
00:01:49,010 --> 00:01:52,640
‫Czyli rodzic w tym przypadku jest naszym komponentem pudełkowym.

27
00:01:53,000 --> 00:02:00,020
‫Dlatego ważne jest, aby to wywołać w przypadku, gdy istnieje jakakolwiek funkcjonalność, której należy użyć i włączyć, aby

28
00:02:00,020 --> 00:02:01,340
‫ten komponent działał.

29
00:02:01,640 --> 00:02:06,680
‫Jeśli tego nie zrobimy, w zasadzie ominiemy jakąkolwiek z tych funkcji i rzeczy mogą się zepsuć.

30
00:02:06,920 --> 00:02:07,630
‫Tak bardzo ważne.

31
00:02:07,650 --> 00:02:13,670
‫Zawsze pamiętaj, że jest to wezwanie do super, gdy wdrażamy komponent start, play i tick.

32
00:02:13,850 --> 00:02:18,650
‫Teraz skopiujmy nasz komunikat dziennika z Begin Play i umieśćmy go w składniku tiku zamiast mówić składnik

33
00:02:18,650 --> 00:02:19,010
‫tiku.

34
00:02:19,010 --> 00:02:27,080
‫Logując się, aby powiedzieć, że składnik tiku jest tutaj zaznaczony, a my przejdziemy dalej, skompilujemy i sprawdzimy, czy

35
00:02:27,080 --> 00:02:29,030
‫ten tik rzeczywiście działa.

36
00:02:29,300 --> 00:02:33,920
‫Gdy kompilator zakończy pracę, przejdźmy dalej i naciśnij play, otwórz nasz dziennik wyjściowy i.

37
00:02:34,130 --> 00:02:37,340
‫Hmm, cóż, teraz nic się nie dzieje.

38
00:02:37,340 --> 00:02:43,820
‫Powodem tego jest to, że jeśli chodzi o optymalizację, automatycznie nierealne większość komponentów

39
00:02:43,820 --> 00:02:45,320
‫ma wyłączony haczyk.

40
00:02:45,590 --> 00:02:49,760
‫Tak więc aktorzy zazwyczaj mają go domyślnie włączony, ale komponenty zwykle mają go wyłączony.

41
00:02:49,880 --> 00:02:54,860
‫Tak więc, jeśli spojrzymy na niektóre inne komponenty, które mamy, takie jak nasz ruch, o którym wiemy,

42
00:02:54,860 --> 00:02:58,550
‫że tykanie działa, możesz zobaczyć, że na górze pliku znajduje się to.

43
00:02:58,550 --> 00:03:06,890
‫Przesuwasz funkcję i ma ona ten podstawowy składnik tik kropka B może kiedykolwiek tik równa się prawda, jeśli

44
00:03:06,890 --> 00:03:09,710
‫nie ustawisz tej właściwości w klasie.

45
00:03:09,710 --> 00:03:15,230
‫Więc to jest właściwość klasy jako właściwość klasycznego podstawowego składnika tik i jest to struktura,

46
00:03:15,230 --> 00:03:19,100
‫która ma B może mieć w sobie właściwość tik.

47
00:03:19,580 --> 00:03:28,430
‫Więc to, co tutaj robimy, to ustawianie tej domyślnej wartości w klasie move podczas jej konstruowania.

48
00:03:28,430 --> 00:03:29,630
‫Tym właśnie jest ta funkcja.

49
00:03:29,630 --> 00:03:36,920
‫Nazywa się to konstruktorem i jest funkcją, która jest wywoływana za każdym razem, gdy tworzymy nowy komponent

50
00:03:37,190 --> 00:03:39,920
‫Mover, aby automatycznie ustawić wartości domyślne.

51
00:03:40,160 --> 00:03:44,570
‫Możemy ustawić kilka domyślnych wartości w nagłówku pliku, tak jak to zrobiliśmy, powinno przesunąć czas przenoszenia.

52
00:03:44,810 --> 00:03:50,690
‫Ale alternatywą do robienia kiedykolwiek w pliku nagłówkowym jest to, że możemy ustawić te właściwości

53
00:03:50,690 --> 00:03:51,620
‫w konstruktorze.

54
00:03:51,860 --> 00:03:54,890
‫Teraz chciałbym, abyś zauważył składnię tutaj.

55
00:03:55,100 --> 00:04:02,300
‫Jeśli przejdziemy do kroku przed plikiem, zobaczysz, że konstruktor ma dokładnie taką samą nazwę jak

56
00:04:02,300 --> 00:04:03,290
‫klasa.

57
00:04:03,290 --> 00:04:12,320
‫Zatem you Mover to nazwa klasy dla naszych komponentów Mover, a jej konstruktor jest również nazywany informacją o ruchu.

58
00:04:12,320 --> 00:04:14,600
‫Nie ma też typu zwrotu.

59
00:04:14,600 --> 00:04:19,460
‫Nie ma sensu zwracać czegokolwiek, ponieważ konstruujemy nowy obiekt.

60
00:04:19,460 --> 00:04:22,670
‫Właśnie robimy tę klasę.

61
00:04:22,880 --> 00:04:30,530
‫Wszystko, czego potrzebujemy, to dostęp do właściwości tej klasy, a także zauważ, że jest ona ustawiona na public.

62
00:04:30,530 --> 00:04:35,060
‫Jest to więc część publiczna naszej definicji klasy.

63
00:04:35,210 --> 00:04:39,410
‫Dlatego chciałbym rzucić wyzwanie, abyś umożliwił sobie zaznaczanie.

64
00:04:39,410 --> 00:04:44,660
‫Więc utworzysz konstruktor w nagłówku i pamiętaj, że składnia, którą widzieliśmy zarówno w

65
00:04:44,660 --> 00:04:51,800
‫filmach z przenoszeniem, jak i H i grabbera H, włączysz zaznaczanie, jak widzieliśmy ponownie w tych innych

66
00:04:51,800 --> 00:04:54,410
‫komponentach w ich plikach CP.

67
00:04:54,710 --> 00:04:56,900
‫Więc po prostu możesz skopiować, jak to się robi.

68
00:04:57,380 --> 00:05:02,380
‫Możesz również zalogować się z konstruktora, aby spróbować i zobaczyć, kiedy zostanie wywołany?

69
00:05:02,390 --> 00:05:03,590
‫Czy to jak zacząć grać?

70
00:05:03,720 --> 00:05:07,050
‫A może zostaje wezwany przed wejściem do gry, czy co?

71
00:05:07,260 --> 00:05:09,600
‫Idź, opublikuj film i spróbuj.

72
00:05:12,920 --> 00:05:13,250
‫Dobra.

73
00:05:13,250 --> 00:05:14,030
‫Witamy spowrotem.

74
00:05:14,060 --> 00:05:20,480
‫Więc przejdziemy do naszego komponentu trig na H i stworzymy nową sekcję publiczną.

75
00:05:20,480 --> 00:05:26,120
‫I tutaj pamiętamy dwukropek na końcu, a następnie musimy nazwać go dokładnie tak samo jak

76
00:05:26,120 --> 00:05:26,600
‫klasa.

77
00:05:26,600 --> 00:05:27,980
‫Więc to nie jest element wyzwalający.

78
00:05:27,980 --> 00:05:33,260
‫To nie ty wyzwalasz, tylko wyzwalasz komponenty w całości.

79
00:05:33,260 --> 00:05:39,710
‫A potem nie mamy żadnych argumentów w tym konstruktorze, więc wstawiamy tylko puste nawiasy i

80
00:05:39,710 --> 00:05:41,540
‫średnik na końcu linii.

81
00:05:41,540 --> 00:05:46,850
‫Teraz możemy przejść do pliku CPP i tutaj możemy wykonać implementację.

82
00:05:46,860 --> 00:05:48,230
‫Ponownie, nie potrzebujemy typu zwracanego.

83
00:05:48,230 --> 00:05:53,330
‫Więc po prostu wyzwalasz składniki, okrężnicę.

84
00:05:53,330 --> 00:05:58,280
‫Dwukropek wyzwalasz komponenty trochę powtarzalne, ale tak to działa.

85
00:05:58,610 --> 00:06:05,210
‫Następnie umieszczamy kilka nawiasów klamrowych i tutaj możemy wykonać dowolny z naszych ustawień kodu, aby nadać domyślne

86
00:06:05,510 --> 00:06:06,920
‫wartości instancji klasy.

87
00:06:07,430 --> 00:06:12,470
‫Więc jeśli przejdziemy do pobrania CPP i przyjrzymy się temu, co robi, widać, że ma swój

88
00:06:12,470 --> 00:06:16,460
‫główny składnik, który punkt techn. B może kiedykolwiek przyjąć za prawdę.

89
00:06:16,790 --> 00:06:17,750
‫Więc wypiszmy to.

90
00:06:17,750 --> 00:06:26,330
‫Pierwotny składnik tick kropka B może kiedykolwiek zaznaczyć B jest po prostu przedrostkiem, którego często używamy, gdy rzeczy

91
00:06:26,330 --> 00:06:31,280
‫mają ustawiony typ logiczny równy true z małą literą t.

92
00:06:31,760 --> 00:06:38,690
‫Tak więc, ponieważ zmiany w konstruktorze nie zawsze są prawidłowo propagowane w kodowaniu na żywo,

93
00:06:38,690 --> 00:06:39,740
‫zamknę edytor.

94
00:06:40,130 --> 00:06:46,370
‫Zamierzam przebudować kod z poziomu programu Visual Studio, a następnie ponownie uruchomić z nowego pliku

95
00:06:46,370 --> 00:06:46,790
‫projektu.

96
00:06:47,030 --> 00:06:51,230
‫Kiedy to zrobię, pójdę dalej i wcisnę odtwarzanie, spójrz na nasz dziennik wyjściowy.

97
00:06:51,470 --> 00:06:54,620
‫I rzeczywiście, widzimy, że element wyzwalający tyka.

98
00:06:55,250 --> 00:07:00,170
‫Więc zamierzam usunąć ten komunikat dziennika, ponieważ jest denerwujący i zamknąłem dziennik wyjściowy w

99
00:07:00,170 --> 00:07:04,430
‫kodzie programu Visual Studio, usuń ten komunikat dziennika w składniku tick.

100
00:07:04,430 --> 00:07:05,780
‫Widzimy, że teraz działa.

101
00:07:06,500 --> 00:07:10,670
‫A my chcieliśmy zrobić log w naszym konstruktorze.

102
00:07:11,840 --> 00:07:17,960
‫Zróbmy więc nowy dziennik z napisem konstruowanie, zobaczmy, czy tym razem kodowanie na żywo może to wykryć, a

103
00:07:17,960 --> 00:07:21,620
‫potem przejdziemy do naszego dziennika wyjściowego i od razu spojrzymy.

104
00:07:21,650 --> 00:07:23,450
‫Nic się tu nie pojawia.

105
00:07:24,290 --> 00:07:28,160
‫Cóż, jeśli pójdę dalej i wcisnę odtwarzanie, spójrz na mój dziennik wyjściowy.

106
00:07:28,370 --> 00:07:33,950
‫Widzę komunikat w dzienniku, że składnik wyzwalacza jest aktywny i na długo przed tym.

107
00:07:33,950 --> 00:07:38,720
‫Właściwie widać, że konstruuje daleko do przodu, kiedy tylko tworzy świat.

108
00:07:39,050 --> 00:07:44,600
‫Zaczyna się konstruować bardzo wcześnie, zanim oczywiście zaczniemy grać, ponieważ musimy przygotować cały świat,

109
00:07:44,600 --> 00:07:46,130
‫zanim zaczniemy grać.

110
00:07:46,550 --> 00:07:51,440
‫Tak się dzieje, gdy wciśniemy Play, ale w rzeczywistości dzieje się to również w edytorze.

111
00:07:51,440 --> 00:07:58,070
‫Więc jeśli wybiorę tutaj jakiegoś aktora, a następnie dodam do niego komponent i dodam nasz wyzwalacz, spójrz na

112
00:07:58,070 --> 00:07:59,240
‫mój dziennik wyjściowy.

113
00:07:59,240 --> 00:08:03,020
‫Wtedy możesz zobaczyć, że wiadomość konstrukcyjna została faktycznie wydrukowana.

114
00:08:03,020 --> 00:08:10,430
‫Musimy więc uważać na to, co robimy w naszych konstruktorach, ponieważ tak naprawdę nazywają się one kodem C++, który jest wywoływany

115
00:08:10,430 --> 00:08:14,480
‫właśnie wtedy, gdy edytujemy, a nawet nie gramy w naszą grę.

116
00:08:14,480 --> 00:08:19,790
‫Obiekty te są tworzone, a zatem konfigurowane i dlatego muszą wywołać ich konstruktor.

117
00:08:20,120 --> 00:08:25,850
‫Zamierzam iść dalej i ponownie usunąć wyzwalacz i trochę wyczyścić, usuwając, tworząc

118
00:08:25,850 --> 00:08:29,960
‫komunikat dziennika i nasz komunikat dziennika rozpoczęcia odtwarzania.

119
00:08:30,200 --> 00:08:30,770
‫Świetna sprawa.

120
00:08:30,770 --> 00:08:37,370
‫W tym wykładzie zobaczyliśmy, jak możemy skonfigurować własne komponenty, tak aby były prawie identyczne z tymi, które zostały

121
00:08:37,370 --> 00:08:40,880
‫utworzone w szablonach dla komponentów sceny i komponentów ACT.

122
00:08:40,880 --> 00:08:47,390
‫Widzieliśmy, jak używać konstruktora do nadania domyślnych wartości właściwościom w naszej klasie.

123
00:08:47,750 --> 00:08:49,340
‫Do zobaczenia na następnym wykładzie.

