﻿1
00:00:04,400 --> 00:00:05,330
‫Cześć i witaj.

2
00:00:05,330 --> 00:00:11,750
‫Na tym wykładzie przyjrzymy się, w jaki sposób możemy tworzyć nowe węzły w planach z

3
00:00:11,750 --> 00:00:17,030
‫C++, tak aby zasadniczo można było wywoływać funkcjonalność C++ z poziomu planów.

4
00:00:17,120 --> 00:00:24,470
‫Zanurzmy się i zobaczmy, jak to się teraz robi tak dobrze, że mogę użyć schematów do wywołania węzłów schematu,

5
00:00:24,890 --> 00:00:32,060
‫ale tak naprawdę chcę aktywować nasz chwytak z tego fragmentu schematu tutaj, a nie drukować jakieś ciągi.

6
00:00:32,360 --> 00:00:34,400
‫Więc jak mam to zrobić?

7
00:00:35,060 --> 00:00:43,340
‫Cóż, na szczęście możemy dość łatwo udostępnić funkcję z klasy C++ do planu.

8
00:00:43,610 --> 00:00:46,160
‫A sposób, w jaki to robimy, jest następujący.

9
00:00:46,160 --> 00:00:48,530
‫Więc zamierzamy stworzyć nową funkcję publiczną.

10
00:00:48,530 --> 00:00:52,280
‫Przejdę więc do mojej sekcji publicznej tuż pod komponentem zaznaczenia.

11
00:00:52,640 --> 00:00:58,010
‫A tutaj mam zamiar stworzyć nową funkcję z void zwracanym typem o nazwie release.

12
00:00:58,310 --> 00:01:03,620
‫Więc zamierzamy to zrobić później, ale na razie wywołamy funkcję zwalniającą.

13
00:01:04,040 --> 00:01:07,610
‫Jak mogę to udostępnić w Blueprint?

14
00:01:07,850 --> 00:01:10,790
‫Cóż, muszę zrobić z tego nową funkcję.

15
00:01:10,790 --> 00:01:13,130
‫Masz więc nowe właściwości zmiennych.

16
00:01:13,400 --> 00:01:20,540
‫Twoja funkcja jest swego rodzaju odpowiednikiem tego, by funkcja była w zasadzie widoczna w krainie planu.

17
00:01:20,540 --> 00:01:21,530
‫Ale nie zatrzymujemy tego.

18
00:01:22,130 --> 00:01:23,180
‫Podobnie jak w przypadku nowej nieruchomości.

19
00:01:23,180 --> 00:01:30,290
‫Musimy wprowadzić tutaj edycję w dowolnym miejscu za pomocą funkcji U, musimy uczynić ją wywoływalną schematem, a to,

20
00:01:31,130 --> 00:01:38,030
‫jak sama nazwa wskazuje, oznacza, że ta funkcja staje się teraz węzłem, do którego schemat ma dostęp.

21
00:01:38,510 --> 00:01:42,470
‫Przejdźmy więc do pobrania CP i stwórzmy do tego implementację.

22
00:01:42,470 --> 00:01:44,450
‫Będzie to typ zwrotu void.

23
00:01:44,450 --> 00:01:52,760
‫Będzie to jak chwycisz dwukropek, zwolnienie dwukropka, bez parametrów i wstawimy treść funkcji, w

24
00:01:52,970 --> 00:02:00,830
‫której wstawię nowe logowanie i dam wiadomość, zwolnij grabber w ten sposób .

25
00:02:00,890 --> 00:02:09,230
‫A potem możemy skompilować i wrócić do naszego odtwarzacza BP, usunę węzeł łańcucha wydruku

26
00:02:09,230 --> 00:02:17,000
‫i przeciągnę z release tutaj i będę szukał release jako funkcji tutaj.

27
00:02:17,000 --> 00:02:19,070
‫A teraz chodźmy się trochę rozejrzeć.

28
00:02:19,070 --> 00:02:23,090
‫W tej chwili nic się nie wyświetla, ponieważ muszę to zrobić na chwytaku.

29
00:02:23,120 --> 00:02:30,710
‫Weźmy więc komponent grabbera, przeciągnijmy go do wykresu zdarzeń, aby utworzyć zmienną grabbera,

30
00:02:30,710 --> 00:02:34,070
‫przeciągnijmy go i poszukajmy release.

31
00:02:34,430 --> 00:02:36,620
‫Teraz zauważ, że w tym przypadku również nic się nie dzieje.

32
00:02:36,620 --> 00:02:38,240
‫A to dlatego, że wykorzystaliśmy kodowanie na żywo.

33
00:02:38,240 --> 00:02:44,150
‫A czasami rzeczy, które zostały skompilowane w kodowaniu na żywo, nie pojawiają się w edytorze.

34
00:02:44,150 --> 00:02:49,880
‫To, co musimy zrobić, to zamknąć edytor, zamknąć okno kodowania światła, a następnie

35
00:02:49,880 --> 00:02:57,200
‫w kodzie Visual Studio nacisnąć Control shift B i skompilować za pomocą edytora Crypt Reader, gdy kompilacja

36
00:02:57,440 --> 00:03:03,470
‫rozwojowa 64, poczekać, aż się powiedzie, a następnie ponownie uruchomić edytor z pliku projektu.

37
00:03:03,650 --> 00:03:10,610
‫Teraz, jeśli ponownie otworzymy nasz odtwarzacz BP i teraz wyciągniemy chwytak, szukamy zwolnienia.

38
00:03:10,610 --> 00:03:13,580
‫Widać, że teraz jest notatka o nazwie release.

39
00:03:13,970 --> 00:03:17,870
‫I rzeczywiście wszystko, co zrobi, to ochłodzenie naszego C++.

40
00:03:17,870 --> 00:03:25,550
‫Możesz więc zobaczyć, jak naprawdę możesz używać Blueprint i C++ w ścisłej współpracy w ten sposób,

41
00:03:25,820 --> 00:03:28,700
‫eksponując rzeczy C++ w świecie Blueprint.

42
00:03:28,700 --> 00:03:32,900
‫Teraz zamierzam podłączyć pióro do wykonywania wydania do węzła wydania.

43
00:03:33,260 --> 00:03:38,390
‫Wejdziemy do naszego lochu i zaczniemy grać.

44
00:03:39,320 --> 00:03:46,850
‫A teraz, gdybym miał chwycić, a następnie zwolnić, nic nie widać, ponieważ jest to w dzienniku wyjściowym.

45
00:03:46,910 --> 00:03:52,160
‫Otwórzmy więc dziennik wyjściowy i zadokujmy go w układzie, a następnie ponownie naciśnij przycisk Odtwórz.

46
00:03:53,390 --> 00:03:57,800
‫A teraz, kiedy łapiemy, a potem puszczamy, widać tam krótką wiadomość.

47
00:03:57,800 --> 00:04:04,160
‫Przewija się bardzo szybko, ponieważ każdy tik, który robimy, uderza w statuę statusu gargulca.

48
00:04:04,400 --> 00:04:09,470
‫Ale jeśli zatrzymasz się i spojrzysz wstecz przez dziennik, zobaczysz, że powiedział zwolniony dziadek.

49
00:04:09,470 --> 00:04:12,800
‫Więc nasz kod C++ jest wykonywany.

50
00:04:12,920 --> 00:04:19,220
‫Ok, więc teraz chciałbym, abyś przeniósł nasz kod wobulacji do funkcji grab.

51
00:04:19,220 --> 00:04:22,310
‫Więc utworzysz funkcję grab i wywołasz ją z Blueprint.

52
00:04:22,310 --> 00:04:24,740
‫Możesz to zrobić w taki sam sposób, jak właśnie zrobiłem funkcję zwolnienia.

53
00:04:25,280 --> 00:04:29,540
‫Ale kiedy tworzysz treść funkcji grab zamiast po prostu drukować cokolwiek,

54
00:04:29,540 --> 00:04:36,410
‫przenieśmy ten kod zamiatania i instrukcję if i wszystkie wszystkie zmienne prep z TIC, aby tego nie robiły.

55
00:04:36,410 --> 00:04:42,620
‫Za każdym razem bierzemy dwa, właśnie wtedy, gdy wywołujemy tę funkcję grab, kiedy wciskamy przycisk myszy

56
00:04:42,620 --> 00:04:49,910
‫lub naciskamy spust na naszym kontrolerze, a następnie ponownie kompilujemy i sprawdzamy logi, aby upewnić się, że rzeczywiście dzieje

57
00:04:49,910 --> 00:04:54,560
‫się to tylko po naciśnięciu przycisku , wstrzymaj wideo i spróbuj.

58
00:04:57,850 --> 00:04:58,140
‫Dobra.

59
00:04:58,150 --> 00:04:58,900
‫Witamy spowrotem.

60
00:04:59,290 --> 00:05:03,820
‫Przejdźmy więc do naszego C++ i do naszego pliku nagłówkowego.

61
00:05:03,820 --> 00:05:10,180
‫Zamierzam zamknąć okno kompilacji tutaj i powyżej wydania, zamierzam stworzyć nowy schemat

62
00:05:11,290 --> 00:05:16,570
‫funkcji, który można wywołać, który będzie nosił nazwę grab.

63
00:05:17,230 --> 00:05:20,440
‫Zaimplementujemy to w C++.

64
00:05:20,590 --> 00:05:22,480
‫Więc znowu, to będzie pustka.

65
00:05:22,520 --> 00:05:28,330
‫Chwytasz dwukropek, chwytasz za okrężnicę nawiasy, a potem szelki.

66
00:05:28,900 --> 00:05:34,660
‫I zamierzam przenieść cały ten kod z komponentu TIC, ponieważ ustawiamy nasze wektory startowe i

67
00:05:34,660 --> 00:05:35,860
‫inne dobre rzeczy.

68
00:05:36,250 --> 00:05:42,880
‫Zejdźmy na sam dół, wytnijmy i wklejmy do chwytaka zamiast tam, gdzie powinno być.

69
00:05:42,880 --> 00:05:43,750
‫W porządku.

70
00:05:43,750 --> 00:05:50,080
‫Zobaczmy teraz, czy kodowanie na żywo przyniesie nową funkcję w odtwarzaczu BP.

71
00:05:50,080 --> 00:05:55,090
‫Przejdźmy do odtwarzacza BP, usuń nasz ciąg do wydruku i przeciągnijmy go.

72
00:05:55,090 --> 00:05:58,540
‫Chwyć węzeł, który mamy i zobacz, czy możemy znaleźć funkcję grab.

73
00:05:58,540 --> 00:06:01,900
‫Ok, więc tym razem funkcja grab była dla nas dostępna.

74
00:06:02,230 --> 00:06:02,800
‫To wspaniale.

75
00:06:02,830 --> 00:06:09,550
‫Teraz podłączmy wciśnięty pin egzekucyjny, przejdźmy do naszego lochu, wciśnijmy play i upewnijmy się, że przewiniemy na

76
00:06:09,550 --> 00:06:11,290
‫sam dół dziennika wyjściowego.

77
00:06:11,410 --> 00:06:17,450
‫Idę prawym przyciskiem myszy do mojego okna i rozejrzyj się, a następnie nacisnę lewy przycisk.

78
00:06:17,480 --> 00:06:20,530
‫Mówi, że żaden aktor nie uderza, a następnie natychmiast chwyta wydanie.

79
00:06:20,530 --> 00:06:23,110
‫Więc teraz aktor uderza, a potem puszczam klawisz.

80
00:06:23,140 --> 00:06:24,520
‫Brak chwytacza wydania.

81
00:06:24,520 --> 00:06:25,900
‫Teraz zapomniałem o swoim gargulcu.

82
00:06:25,900 --> 00:06:26,470
‫Spójrz na to.

83
00:06:26,890 --> 00:06:31,240
‫Naciskam i wyświetla się komunikat: Aktor uderzył w posąg Gogola, a potem mogę puścić chwytak.

84
00:06:31,690 --> 00:06:36,430
‫Więc teraz mamy odpowiednią architekturę.

85
00:06:36,730 --> 00:06:38,590
‫Aby złapać tego gargulca.

86
00:06:38,770 --> 00:06:42,450
‫Następnie musimy zająć się częścią fizyki tego układu.

87
00:06:42,880 --> 00:06:44,080
‫Do zobaczenia w następnym wykładzie.

