﻿1
00:00:04,520 --> 00:00:05,630
‫Cześć i witaj.

2
00:00:05,630 --> 00:00:11,450
‫Na tym wykładzie nauczymy się o funkcjach, które nie znajdują się w planach poziomów,

3
00:00:11,690 --> 00:00:14,240
‫ale w konkretnej klasie planu.

4
00:00:14,240 --> 00:00:19,880
‫Są to tak zwane funkcje składowe i są absolutnie kluczowe dla programowania obiektowego.

5
00:00:20,210 --> 00:00:22,400
‫Zanurzmy się i zobaczmy, jak działają.

6
00:00:23,270 --> 00:00:31,370
‫Tak więc w naszej funkcji odradzania pocisku w planach poziomów mamy tu mnóstwo węzłów związanych z

7
00:00:31,400 --> 00:00:36,590
‫dodaniem impulsu, określeniem kierunku impulsu i uzyskaniem statycznego komponentu siatki.

8
00:00:37,010 --> 00:00:43,310
‫Wszystkie te węzły dogłębnie wykorzystują instancję pocisku BP.

9
00:00:43,700 --> 00:00:50,600
‫Czy nie byłoby wspaniale, gdybyśmy mogli wziąć cały ten kod i przenieść go do pocisku BP, aby

10
00:00:50,600 --> 00:00:54,860
‫kod zajmujący się tymi danymi żył z samymi danymi?

11
00:00:55,370 --> 00:00:59,300
‫Cóż, to jest cały punkt programowania obiektowego.

12
00:00:59,300 --> 00:01:06,770
‫Możemy więc zdefiniować programowanie obiektowe jako funkcje żyjące z danymi, którymi manipulują.

13
00:01:07,490 --> 00:01:09,020
‫Więc jak to działa?

14
00:01:09,020 --> 00:01:13,250
‫Jak możemy tworzyć funkcje na poszczególnych wystąpieniach rzeczy?

15
00:01:14,000 --> 00:01:20,060
‫Cóż, jednym ze sposobów, w jaki możemy to zrobić, możemy otworzyć naszą klasę pocisku BP

16
00:01:20,060 --> 00:01:26,960
‫i upewnić się, że kliknęliśmy otwórz pełny edytor planów. Możesz zobaczyć, że w tym pełnym edytorze planów

17
00:01:26,960 --> 00:01:35,270
‫znajduje się panel z moim planem i sekcja funkcji więc możemy nacisnąć strzałkę plusa, aby utworzyć nową funkcję w klasie pocisku

18
00:01:35,270 --> 00:01:35,780
‫BP.

19
00:01:35,780 --> 00:01:41,900
‫I zamierzam nazwać tę funkcję, wypisz twoje imię, a to wypisz twoje imię.

20
00:01:41,900 --> 00:01:43,940
‫Funkcja powinna właśnie to zrobić.

21
00:01:44,240 --> 00:01:49,850
‫Widzimy, że mamy węzeł, który rozpoczyna wykonywanie tej funkcji, więc możemy wyciągnąć jego pin

22
00:01:49,850 --> 00:01:52,430
‫wykonawczy i wpisać print string.

23
00:01:52,430 --> 00:01:53,750
‫Więc to zostanie wydrukowane.

24
00:01:53,750 --> 00:01:54,320
‫Cześć.

25
00:01:54,320 --> 00:01:57,140
‫Niezupełnie nazwa tej funkcji, prawda?

26
00:01:57,170 --> 00:01:59,090
‫Ale wyjaśnimy to za chwilę.

27
00:01:59,780 --> 00:02:04,070
‫Więc to, co tutaj mamy, jest znane jako funkcja składowa.

28
00:02:04,070 --> 00:02:11,990
‫Funkcja składowa to funkcja w klasie, która zawsze jest wywoływana w określonej instancji klasy.

29
00:02:11,990 --> 00:02:18,020
‫Więc nie mówisz, że zadzwonię lub wydrukuję twoje imię na wszystkich pociskach BP.

30
00:02:18,440 --> 00:02:24,950
‫Musisz powiedzieć, chcę zadzwonić, wydrukować swoje imię na pocisku BP numer jeden lub pocisku BP, który

31
00:02:24,950 --> 00:02:26,420
‫właśnie się pojawił.

32
00:02:26,870 --> 00:02:36,580
‫Więc jeśli przejdziemy do schematu naszego poziomu, to co musisz zrobić, to wziąć odniesienie, które wyszło z

33
00:02:36,590 --> 00:02:38,540
‫pocisku odradzania BP.

34
00:02:39,110 --> 00:02:47,990
‫I z tego odniesienia możesz nazwać print swoje imię i zobaczysz, że automatycznie łączy się ze

35
00:02:47,990 --> 00:02:51,770
‫specjalną notatką wejściową o nazwie Target.

36
00:02:51,890 --> 00:02:54,380
‫I oczywiście musisz też zaczepić swoje szpilki egzekucyjne.

37
00:02:54,380 --> 00:02:58,430
‫Zamierzam to podłączyć po dodaniu impulsu.

38
00:02:58,610 --> 00:03:07,220
‫Ale to, co jest interesujące w tym specjalnym węźle wejściowym, to to, że jeśli przejdziesz do pocisku BP, zobaczysz

39
00:03:07,310 --> 00:03:08,690
‫ten wydruk.

40
00:03:08,690 --> 00:03:12,620
‫Twoje imię nie ma takiego obciążenia wejściowego.

41
00:03:12,920 --> 00:03:14,510
‫Więc co się tutaj dzieje?

42
00:03:15,080 --> 00:03:24,020
‫Cóż, domyślnie każda funkcja członkowska ma parametr, który jest jej bieżącym celem lub bieżącą instancją.

43
00:03:24,620 --> 00:03:31,670
‫Możesz to uzyskać, klikając prawym przyciskiem myszy wykres zdarzeń planu i wpisując self.

44
00:03:32,510 --> 00:03:37,850
‫I widać, że jest węzeł o nazwie get referencja do siebie i po prostu tworzy węzeł self taki jak

45
00:03:37,850 --> 00:03:38,210
‫ten.

46
00:03:38,660 --> 00:03:46,340
‫A następnie możesz użyć tego odwołania do obiektu self, aby uzyskać dowolne właściwości tego konkretnego obiektu.

47
00:03:46,340 --> 00:03:53,240
‫Więc jeśli chcielibyśmy zdobyć nazwę naszego pocisku BP, możesz ściągnąć autoreferencję i wpisać

48
00:03:53,240 --> 00:03:56,900
‫nazwę wyświetlaną get, co zrobiliśmy wcześniej.

49
00:03:57,200 --> 00:04:00,980
‫A potem możesz podłączyć wyświetlaną nazwę do naszego napisu.

50
00:04:01,370 --> 00:04:09,650
‫Więc teraz, kiedy gramy i wystrzeliwujemy nowy pocisk, możesz zobaczyć, że drukuje nazwę pocisku i

51
00:04:10,280 --> 00:04:17,180
‫możesz zobaczyć, czy każdy nowy pocisk tworzy nazwę jest inna, ponieważ jaźń, do

52
00:04:17,180 --> 00:04:23,600
‫której odnosi się funkcja członka to inna jaźń to inny pocisk.

53
00:04:23,780 --> 00:04:31,490
‫Dowiedzieliśmy się więc, że self jest węzłem dostępnym wewnątrz funkcji składowych, który zawsze

54
00:04:31,490 --> 00:04:35,120
‫wskazuje konkretną, bieżącą instancję, której używamy.

55
00:04:35,270 --> 00:04:40,160
‫Więc cały punkt patrzenia na funkcje składowe na pierwszym miejscu, powodem, dla którego zaczęliśmy,

56
00:04:40,160 --> 00:04:45,620
‫były te węzły w planach poziomów, sposób, w jaki otrzymujemy zaciek statyczny, otrzymujemy wektor w przód,

57
00:04:45,620 --> 00:04:48,020
‫a następnie dodajemy do nich impuls.

58
00:04:48,620 --> 00:04:51,860
‫Czują, że powinny żyć na pocisku BP.

59
00:04:51,860 --> 00:04:55,100
‫I właśnie do tego chciałbym cię rzucić wyzwanie.

60
00:04:55,430 --> 00:04:58,670
‫Więc to jest trochę skomplikowane oskarżenie, ale zbliżamy się do końca sekcji.

61
00:04:58,670 --> 00:05:01,490
‫Więc przeprowadzę Cię krok po kroku.

62
00:05:02,120 --> 00:05:03,850
‫Więc zrobię func uruchamiania.

63
00:05:04,030 --> 00:05:07,470
‫Shine on the BP project, stworzony również na projektach BP.

64
00:05:07,480 --> 00:05:09,720
‫Przejdę do tej części plus i dodam nową.

65
00:05:09,730 --> 00:05:10,840
‫Nazwij to uruchomienie.

66
00:05:11,500 --> 00:05:18,670
‫Następnie wytnij i wklej węzły z planów poziomów do tej nowo utworzonej funkcji i upewnij

67
00:05:18,670 --> 00:05:21,850
‫się, że podłączasz piny wykonawcze itp.

68
00:05:22,600 --> 00:05:24,820
‫Teraz spróbujesz skompilować.

69
00:05:25,120 --> 00:05:30,190
‫Nie robiliśmy tego zbyt często w projektach, ale kompilacja pozwala po prostu

70
00:05:30,400 --> 00:05:36,730
‫sprawdzić pisownię kodu i upewnić się, że nie ma żadnych błędów, które kompilator Blueprint może przewidzieć.

71
00:05:36,940 --> 00:05:43,570
‫Tak więc robisz to w ten sposób, że przechodzisz do przycisku w lewym górnym rogu i klikasz kompiluj, a jeśli

72
00:05:43,570 --> 00:05:48,550
‫są jakieś błędy, pojawią się one na dole w małym okienku zwanym wynikami kompilatora.

73
00:05:48,550 --> 00:05:53,470
‫Widać, że kompilacja się powiodła, ale tutaj pojawią się wszelkie błędy, a czasami w węźle

74
00:05:53,470 --> 00:05:57,010
‫pojawi się trochę czerwonego koloru, aby wskazać, gdzie jest błąd.

75
00:05:57,910 --> 00:06:03,550
‫Chciałbym zobaczyć, czy możesz spróbować zrozumieć, o czym mówi ten błąd, i spróbować naprawić błąd

76
00:06:03,760 --> 00:06:07,210
‫za pomocą nowego węzła własnego, o którym się nauczyliśmy.

77
00:06:07,990 --> 00:06:15,730
‫A potem musisz iść dalej i wywołać tę funkcję z planów poziomów, przeciągając instancję, tak jak

78
00:06:15,730 --> 00:06:22,570
‫zrobiliśmy to dla naszego wydruku, przeciągnij węzeł z instancji nowego pocisku utworzonego z węzła

79
00:06:22,570 --> 00:06:25,720
‫odradzania i wywołaj funkcję uruchamiania.

80
00:06:26,260 --> 00:06:28,150
‫Wstrzymaj wideo i spróbuj.

81
00:06:31,280 --> 00:06:31,970
‫Dobra.

82
00:06:31,970 --> 00:06:32,780
‫Witamy spowrotem.

83
00:06:32,840 --> 00:06:39,260
‫Przejdę więc do naszego pocisku BP, nacisnę przycisk plus obok funkcji w panelu

84
00:06:39,260 --> 00:06:47,030
‫z moim planem i wpiszę launch, aby nazwać funkcję, wróćmy do planu naszego poziomu, wytnijmy węzły

85
00:06:47,030 --> 00:06:51,440
‫i przejdźmy do pocisk BP i wklej je.

86
00:06:52,130 --> 00:06:58,460
‫Teraz muszę podpiąć wykonanie od uruchomienia, aby dodać impuls, a teraz mam zamiar trafić, skompilować

87
00:06:58,490 --> 00:07:04,580
‫i widzisz, że pojawia się błąd na statycznym zacieraniu lub dostaję węzeł zacierania statycznego.

88
00:07:05,120 --> 00:07:10,310
‫A jeśli spojrzysz na wyniki kompilatora, zobaczysz, że używa nieprawidłowego celu.

89
00:07:10,820 --> 00:07:15,240
‫Więc docelowo to wejście tutaj nie jest poprawne.

90
00:07:15,260 --> 00:07:24,470
‫Teraz, jak ci zasugerowałem, możesz kliknąć prawym przyciskiem myszy i wpisać self, aby uzyskać odniesienie do siebie, a

91
00:07:24,470 --> 00:07:28,190
‫następnie wprowadzić to self do celu.

92
00:07:28,850 --> 00:07:34,430
‫Teraz, jeśli ponownie naciśniesz kompilację, zobaczysz, że błąd zniknął

93
00:07:34,430 --> 00:07:43,250
‫i został skompilowany pomyślnie, ponieważ teraz jest w stanie pobrać statyczne komponenty z bieżącego pocisku.

94
00:07:43,490 --> 00:07:45,770
‫Ta funkcja uruchamiania jest wywoływana.

95
00:07:46,550 --> 00:07:56,030
‫Jeśli więc wrócimy teraz do naszych planów poziomów, możemy pobrać pin wyjściowy z naszego aktora odradzania i możemy

96
00:07:56,030 --> 00:07:59,890
‫wpisać launch, aby wywołać naszą funkcję uruchamiania.

97
00:07:59,900 --> 00:08:06,050
‫Możesz zobaczyć, że kod wykonawczy został automatycznie podłączony dla mnie, a następnie po funkcji

98
00:08:06,050 --> 00:08:12,140
‫uruchamiania możemy podłączyć naszą funkcję drukowania twojego imienia, jeśli chcemy, chociaż było to tylko

99
00:08:12,560 --> 00:08:18,920
‫w celach debugowania i demonstracji, a jeśli to przetestujesz, możesz Widzę, że nadal działa pomyślnie,

100
00:08:18,920 --> 00:08:24,470
‫z wyjątkiem kodu, który zajmuje się uruchamianiem życia na samym pocisku.

101
00:08:24,560 --> 00:08:25,190
‫Świetna sprawa.

102
00:08:25,190 --> 00:08:30,800
‫W tym wykładzie funkcje składowe poznaliśmy jedną z podstawowych koncepcji programowania obiektowego.

103
00:08:30,950 --> 00:08:32,510
‫Do zobaczenia w następnym.

