﻿1
00:00:04,460 --> 00:00:05,320
‫Cześć i witaj.

2
00:00:05,330 --> 00:00:09,770
‫Na tym wykładzie nauczymy się czegoś, co nazywa się obiektem świata, bardzo ważnym obiektem

3
00:00:09,770 --> 00:00:10,640
‫w Unreal.

4
00:00:10,850 --> 00:00:15,950
‫Zobaczymy, jak możemy z tego obiektu dostać się do aktualnego czasu w naszej grze i wydrukować

5
00:00:15,950 --> 00:00:18,350
‫go na konsoli pod koniec tego wykładu.

6
00:00:18,620 --> 00:00:20,420
‫Zanurzmy się więc i zobaczmy, jak to działa.

7
00:00:21,350 --> 00:00:28,190
‫Tak więc, aby móc tworzyć ślady linii lub przemiatania, musimy zrozumieć inną koncepcję, inny

8
00:00:28,190 --> 00:00:34,280
‫rodzaj obiektu, który istnieje w nierzeczywistej krainie, a tym obiektem jest świat.

9
00:00:34,670 --> 00:00:37,610
‫Więc dużo zajmowaliśmy się poziomami.

10
00:00:37,610 --> 00:00:41,330
‫Więc jeśli przejdziemy do naszego losowania zawartości, zajmowaliśmy się również mapami.

11
00:00:41,690 --> 00:00:46,520
‫Więc mapa i poziom, o którym mówiliśmy, są synonimami.

12
00:00:46,850 --> 00:00:50,840
‫Jednak świat jest taki na początku.

13
00:00:51,110 --> 00:00:59,060
‫Na początku był nowy świat, a nowy świat jest typem, jest klasą dla środowiska, które

14
00:00:59,060 --> 00:01:01,730
‫widzimy, gdy gramy w grę.

15
00:01:02,360 --> 00:01:05,300
‫Ale to niekoniecznie tylko jeden poziom.

16
00:01:05,300 --> 00:01:12,800
‫Możesz załadować poziom, który w C++ nazywa się poziomem ty, który jest po prostu zbiorem aktorów, których powinniśmy

17
00:01:12,800 --> 00:01:14,720
‫wprowadzić do nowego świata.

18
00:01:14,720 --> 00:01:19,700
‫Możesz więc załadować poziom do swojego nowego świata, ale niekoniecznie tylko jeden poziom.

19
00:01:19,700 --> 00:01:23,270
‫Możesz załadować wiele poziomów do jednego świata.

20
00:01:23,600 --> 00:01:28,220
‫A to dlatego, że często mamy te poziomy strumieniowania, mamy bardzo duże poziomy, w których nie

21
00:01:28,220 --> 00:01:32,300
‫chcemy ładować wszystkiego, każdy aktor do poziomu za jednym razem ze względu na wydajność.

22
00:01:32,600 --> 00:01:38,870
‫Więc podzieliliśmy to na wiele poziomów, co pozwala nam wprowadzić tylko wymagane części

23
00:01:38,870 --> 00:01:39,560
‫sceny.

24
00:01:39,950 --> 00:01:44,720
‫Więc jeśli spojrzymy na stronę dokumentacji na New World, myślę, że opisuje ona

25
00:01:44,720 --> 00:01:50,960
‫raczej zwięźle, że świat jest obiektem najwyższego poziomu reprezentującym mapę lub piaskownicę, w której aktorzy i komponenty będą

26
00:01:50,960 --> 00:01:52,580
‫istnieć i być renderowane.

27
00:01:52,850 --> 00:01:57,230
‫A jeśli spojrzysz trochę dalej, to mówi, że świat może być pojedynczym trwałym

28
00:01:57,560 --> 00:02:03,830
‫poziomem, co oznacza poziom, który będzie tam stale, lub z potencjalnie opcjonalną listą poziomów przesyłania strumieniowego i zasadniczo dziwnych

29
00:02:03,830 --> 00:02:07,460
‫poziomów, które mogą być ładowane za każdym razem, gdy chcieć.

30
00:02:08,270 --> 00:02:10,550
‫Dlaczego to wszystko jest interesujące?

31
00:02:11,000 --> 00:02:14,540
‫To ciekawe, ponieważ pozwala nam na śledzenie linii.

32
00:02:14,540 --> 00:02:20,540
‫Jeśli przeszukamy dokumentację tutaj pod kątem śledzenia linii, zobaczysz, że jest tu mnóstwo

33
00:02:20,570 --> 00:02:28,280
‫funkcji, szczególnie ta, która jest dla nas najbardziej interesująca, to śledzenie linii pojedynczo po kanale lub

34
00:02:28,280 --> 00:02:35,960
‫śledzenie linii wiele po kanale, które zasadniczo pozwalają nam odpowiednio aby przejąć pierwszy trafiony obiekt lub

35
00:02:35,960 --> 00:02:38,930
‫wszystkie obiekty trafione przez linię.

36
00:02:39,410 --> 00:02:45,260
‫I widać, że listy argumentów, zwłaszcza jeśli patrzę na pojedynczy ślad

37
00:02:45,260 --> 00:02:52,220
‫linii, lista argumentów ma początek ma koniec, ma kanał śledzenia, dla którego należy wykonać śledzenie.

38
00:02:52,640 --> 00:02:58,040
‫I faktycznie daje nam wynik na liście parametrów, co jest trochę dziwne i

39
00:02:58,040 --> 00:02:59,360
‫wkrótce to omówimy.

40
00:03:00,020 --> 00:03:01,940
‫Ale tak czy inaczej, to jest ślad linii.

41
00:03:01,940 --> 00:03:05,420
‫Mamy również możliwość zamiatania.

42
00:03:05,540 --> 00:03:09,740
‫Więc jeśli szukamy przemiatania, widać, że istnieje przemiatanie wielokanałowe.

43
00:03:09,980 --> 00:03:12,380
‫Istnieje również przemiatanie pojedynczego kanału.

44
00:03:12,710 --> 00:03:20,120
‫I tutaj, oprócz początku i końca, masz również typ kształtu kolizji f kolizji, przez który możesz

45
00:03:20,120 --> 00:03:20,630
‫przejść.

46
00:03:20,630 --> 00:03:26,840
‫Zasadniczo, jeśli klikniemy tę kolizję F, kształt, który możesz śledzić w dokumentacji w

47
00:03:26,840 --> 00:03:33,560
‫czasie rzeczywistym, przeczytaj więcej na ten temat i zobaczysz, że kształt kolizji zasadniczo obsługuje bycie

48
00:03:33,620 --> 00:03:36,230
‫kulą, pudełkiem kapsuł lub linią.

49
00:03:36,530 --> 00:03:43,550
‫Tak więc użyjemy sfery w naszym przypadku i zobaczymy, jak to skonstruować później.

50
00:03:44,030 --> 00:03:48,500
‫Ale możesz zobaczyć, dlaczego chcemy zdobyć ten świat, dlaczego jest to dla nas ważne.

51
00:03:48,500 --> 00:03:52,520
‫Ale pytanie brzmi, jak zdobędziemy nowy świat?

52
00:03:52,520 --> 00:03:55,190
‫A kiedy już go zdobędziemy, jak go wykorzystamy?

53
00:03:55,940 --> 00:03:59,090
‫Cóż, chodźmy i przyjrzyjmy się kodowi Visual Studio.

54
00:03:59,990 --> 00:04:06,410
‫Na każdym komponencie i na każdym aktorze znajduje się funkcja o nazwie Get World.

55
00:04:07,010 --> 00:04:13,310
‫A jeśli wpiszesz get world, a następnie umieścisz w nawiasach, to zwróci obiekt typu you world, w

56
00:04:13,310 --> 00:04:15,950
‫rzeczywistości wskaźnik do obiektu typu U world.

57
00:04:16,100 --> 00:04:17,030
‫Więc zachowajmy to.

58
00:04:17,030 --> 00:04:23,450
‫Mamy nowy wskaźnik na świat, który będziemy nazywać po prostu światem, prawda?

59
00:04:23,990 --> 00:04:25,670
‫A to równa się zdobywaniu światów.

60
00:04:25,670 --> 00:04:28,310
‫A na końcu możemy umieścić średnik.

61
00:04:28,610 --> 00:04:34,490
‫Teraz, aby rzeczywiście zdobyć cokolwiek z tego świata, użyjemy operatora strzałki.

62
00:04:34,550 --> 00:04:40,280
‫Więc zrobimy World Arrow, a wtedy będziemy mogli przyjrzeć się niektórym szczegółom tego

63
00:04:40,280 --> 00:04:41,000
‫świata.

64
00:04:41,450 --> 00:04:47,270
‫Ale zanim to zrobimy, musimy dołączyć jego plik nagłówkowy, ponieważ w przeciwnym razie ten plik C++, kiedy

65
00:04:47,270 --> 00:04:52,550
‫kompilator do niego dotrze, nie będzie wiedział, co jest zawarte w a, które wpiszesz.

66
00:04:52,550 --> 00:04:55,490
‫Nie zawiera żadnych informacji o waszym świecie.

67
00:04:55,970 --> 00:05:02,120
‫Aby to naprawić, musimy zajrzeć do naszej dokumentacji, ponieważ przewiniesz do góry i poszukamy tego miejsca,

68
00:05:02,120 --> 00:05:03,410
‫w którym jest.

69
00:05:03,540 --> 00:05:10,170
‫Mówi include i to daje nam to, czego potrzebujemy, możesz powiedzieć, że zawiera silnik cytatów.

70
00:05:10,490 --> 00:05:15,030
‫Cóż, to jest to, czego potrzebujemy, więc napiszemy to po tym, jak złapię mu kropkę.

71
00:05:15,990 --> 00:05:23,400
‫A teraz, jeśli kontrolujemy przestrzeń, powinniśmy otrzymać listę rzeczy, które możemy zrobić z tym konkretnym światem.

72
00:05:23,820 --> 00:05:26,340
‫A mamy ich wielu.

73
00:05:26,340 --> 00:05:35,580
‫Oczywiście możemy znaleźć nasz przebieg linii, możemy znaleźć nasze przeciągnięcie według wielu lub pojedynczych witryn, wezwać Cię

74
00:05:35,580 --> 00:05:38,010
‫do wydrukowania upływu czasu.

75
00:05:38,010 --> 00:05:41,730
‫Jest to właściwość dostępna w nowym obiekcie świata.

76
00:05:42,180 --> 00:05:48,030
‫Znajdziesz właściwość time seconds przeczytaną o tym w dokumentacji, która jest połączona

77
00:05:48,030 --> 00:05:52,980
‫z tym wykładem i zapiszesz ją w zmiennej odpowiedniego typu.

78
00:05:52,980 --> 00:05:58,890
‫Ponownie, zapoznanie się z dokumentacją powie ci, jaki powinien być typ, a następnie ponownie zarejestruj go

79
00:05:58,890 --> 00:06:01,200
‫w konsoli, używając odpowiedniego formatu.

80
00:06:01,200 --> 00:06:03,660
‫Określ wstrzymanie wideo i spróbuj.

81
00:06:07,290 --> 00:06:07,620
‫Dobra.

82
00:06:07,620 --> 00:06:08,280
‫Witamy spowrotem.

83
00:06:08,290 --> 00:06:13,860
‫Więc użyjemy tego, a jeśli poszukam czasu w dokumentacji, zobaczysz, że jest

84
00:06:13,860 --> 00:06:17,760
‫to liczba zmiennoprzecinkowa o nazwie czas w sekundach.

85
00:06:17,760 --> 00:06:19,140
‫To jest ten, którego chcę.

86
00:06:19,440 --> 00:06:21,300
‫W tym przypadku jest to czas gry.

87
00:06:21,300 --> 00:06:25,920
‫Więc jeśli spowolnisz czas przyspieszania, to również zostanie spowolnione lub przyspieszone.

88
00:06:26,040 --> 00:06:29,010
‫Ale są takie, na które nie ma to wpływu.

89
00:06:29,580 --> 00:06:31,020
‫Masz tam różne.

90
00:06:31,020 --> 00:06:33,540
‫Czas, sekundy, sekundy czasu przerwy.

91
00:06:33,540 --> 00:06:38,490
‫Są też sekundy czasu rzeczywistego, które nie są w żaden sposób wstrzymywane ani zmieniane.

92
00:06:39,030 --> 00:06:40,560
‫Więc interesuje mnie czas w sekundach.

93
00:06:40,560 --> 00:06:43,650
‫Tak naprawdę nie ma znaczenia, którego użyjemy, ponieważ i tak wszystkie są pływakami.

94
00:06:43,650 --> 00:06:48,330
‫Więc mam zamiar stworzyć pływak o nazwie Czas i przechowywać Czas Strzałki Światowej.

95
00:06:48,330 --> 00:06:53,700
‫Krótko mówiąc, nie musimy umieszczać świata w jego własnej zmiennej.

96
00:06:53,940 --> 00:06:56,730
‫Jest na tyle krótki, że można to nazwać światem zdobywania.

97
00:06:56,730 --> 00:06:57,900
‫Więc to jest to, co zwykle robimy.

98
00:06:57,900 --> 00:07:01,530
‫Dostanie świat, a potem czas strzałek w sekundach.

99
00:07:01,530 --> 00:07:12,330
‫Więc teraz możemy zrobić dziennik, który powiemy, że jest bieżący czas, a potem zrobimy procent F, ponieważ wypisujemy tutaj liczbę

100
00:07:12,330 --> 00:07:18,810
‫zmiennoprzecinkową, a następnie możemy podać jej czas jako dane wejściowe do

101
00:07:18,810 --> 00:07:19,560
‫dziennika.

102
00:07:19,890 --> 00:07:28,110
‫Teraz przejdźmy kontrolką alt f 11 do kodu na żywo, a następnie otworzymy i zadokujemy dziennik wyjściowy.

103
00:07:29,790 --> 00:07:31,320
‫I włącz odtwarzanie.

104
00:07:32,760 --> 00:07:39,510
‫I tam widać, że mamy aktualny czas, który w grze takiej jak ta odliczany jest

105
00:07:39,510 --> 00:07:40,800
‫w sekundach.

106
00:07:40,800 --> 00:07:47,070
‫A jeśli faktycznie naciśniemy przycisk pauzy, zauważysz, że czas przestaje płynąć, a jeśli naciśniemy odtwarzanie, po prostu wznawia

107
00:07:47,400 --> 00:07:49,980
‫się od miejsca, w którym byliśmy.

108
00:07:50,550 --> 00:07:51,090
‫On chce.

109
00:07:51,090 --> 00:07:55,860
‫Możesz poeksperymentować z wykorzystaniem sekund czasu rzeczywistego i zobaczyć, czy ten efekt się pojawi.

110
00:07:56,340 --> 00:07:57,630
‫Ale nie idę tutaj.

111
00:07:57,630 --> 00:08:03,540
‫Pokazaliśmy, że możemy uzyskać dostęp do obiektów tego nowego świata, obiektów tego świata, w których obecnie się

112
00:08:03,540 --> 00:08:08,640
‫znajdujemy, i że możemy uzyskać z nich właściwości za pomocą naszego operatora strzałki.

113
00:08:08,790 --> 00:08:11,340
‫Poklep się po plecach i do zobaczenia na następnym wykładzie.

