﻿1
00:00:04,470 --> 00:00:05,770
‫Hey, tekrar hoş geldin.

2
00:00:05,790 --> 00:00:12,240
‫Bu videoda, oyunun başladığını bize bildirmek için ekranda metin gösterme üzerinde çalışacağız.

3
00:00:12,240 --> 00:00:18,240
‫Ve bu, oyuncuya oyunun henüz tam olarak başlamadığını, ancak yakında başlayacağını bildirmek için

4
00:00:18,240 --> 00:00:21,140
‫geri sayım sayacını göstermenin ilk adımıdır.

5
00:00:21,150 --> 00:00:24,900
‫Şimdi, bu blueprint uygulanabilir olayları içerecek.

6
00:00:24,930 --> 00:00:32,280
‫Blueprint Implementable Event, C++'dan çağırabileceğimiz bir C++ işlevidir, ancak aslında işlevselliği

7
00:00:32,280 --> 00:00:35,070
‫blueprint tarafında uygularız.

8
00:00:35,070 --> 00:00:41,910
‫Dolayısıyla, oyun modu gibi C++ sınıfımız olabilir ve blueprint, uygulanabilir olay olarak işaretlenmiş bir

9
00:00:41,910 --> 00:00:47,310
‫işleve sahip olabiliriz ve ardından bu davranışı blueprint'lerde uygulayabiliriz.

10
00:00:47,310 --> 00:00:54,570
‫Dolayısıyla, blueprint uygulanabilir olayı olarak işaretlenen C++ işlevini çağırdığımızda, blueprint'teki olay

11
00:00:54,570 --> 00:00:55,920
‫ateşlenecektir.

12
00:00:55,920 --> 00:01:01,890
‫Ve blueprint'te bu olaya bağladığımız herhangi bir blueprint mantığı çağrılacaktır.

13
00:01:02,160 --> 00:01:08,640
‫Bu yüzden burada tune tanklarında bir blueprint uygulanabilir olay fonksiyonu oluşturacağım, oyun modları ve blueprint

14
00:01:08,640 --> 00:01:11,310
‫uygulanabilir olaylar özel olamaz.

15
00:01:11,310 --> 00:01:14,220
‫Bu yüzden bunu korumalı bölüme ekleyeceğim.

16
00:01:14,220 --> 00:01:19,080
‫Şimdi bunu bir void fonksiyon yapacağım ve basitçe bu start game'i çağıracağım.

17
00:01:19,080 --> 00:01:25,380
‫Şimdi, bunu blueprint uygulanabilir bir olay haline getirmek için, U fonksiyonu ile bir U fonksiyonu makrosu vermem

18
00:01:25,380 --> 00:01:26,160
‫gerekiyor.

19
00:01:26,160 --> 00:01:30,570
‫Blueprint uygulanabilir olayını belirtin.

20
00:01:30,690 --> 00:01:36,390
‫Şimdi, bu blueprint uygulanabilir olayını işaretlediğimizde, C++'da ona bir fonksiyon gövdesi vermemiz

21
00:01:36,390 --> 00:01:37,800
‫bile gerekmez.

22
00:01:37,800 --> 00:01:43,680
‫Unreal Engine bunun için işlevselliği planlarda uygulamamızı bekleyecektir, ancak bunu C++'dan

23
00:01:43,680 --> 00:01:49,110
‫çağırabiliriz ve burada Handle Game Start'ta yapacağımız şey tam olarak budur.

24
00:01:49,110 --> 00:01:55,260
‫Tank ve oyuncu denetleyici değişkenlerini ayarladıktan hemen sonra oyunu başlat diyeceğim ve şimdi

25
00:01:56,070 --> 00:01:57,840
‫bunu derleyebiliriz.

26
00:01:57,840 --> 00:02:04,170
‫Düzenleyiciye geri dönerek BP tune tanks oyun modunu açacağım ve burada işlevi

27
00:02:04,170 --> 00:02:05,700
‫uygulayabiliriz.

28
00:02:05,700 --> 00:02:13,380
‫Yani sağ tıklayıp start game yazarsak, işte fonksiyonu bildirir bildirmez oluşturulan ve blueprint

29
00:02:13,380 --> 00:02:19,980
‫uygulanabilir olayı ile fonksiyon makrosunu verdiğimiz start game olayı.

30
00:02:19,980 --> 00:02:26,580
‫Yani C++ tarafında bunu çağırıyoruz ve planlarda bu olay buna yanıt veriyor.

31
00:02:26,610 --> 00:02:33,390
‫Bunu basit bir print string düğümü ile test edebiliriz ve string için Start game diyebiliriz.

32
00:02:33,600 --> 00:02:37,650
‫Şimdi oynat tuşuna basarsak, sol üstte oyuna başla yazısını göreceğim.

33
00:02:37,650 --> 00:02:41,370
‫Böylece planımızın uygulanabilir olayının çalıştığını biliyoruz.

34
00:02:41,370 --> 00:02:49,530
‫Şimdi, bu olayın yapmasını istediğimiz şey, oyuncuya oyunun başlamak üzere olduğunu bildiren bir metin içeren bir widget göstermektir,

35
00:02:49,530 --> 00:02:53,880
‫bu da gösterilecek bir widget oluşturmamız gerektiği anlamına gelir.

36
00:02:53,880 --> 00:03:00,960
‫Bu yüzden blueprints klasöründe yeni bir klasör oluşturacağım ve buna widget adını vereceğim ve widget'lara

37
00:03:00,960 --> 00:03:02,370
‫çift tıklayacağım.

38
00:03:02,370 --> 00:03:05,730
‫Ve burada yeni bir widget planı oluşturacağım.

39
00:03:05,940 --> 00:03:11,010
‫Şimdi sağ tıklayıp kullanıcı arayüzüne gidersem, işte Widget Blueprint.

40
00:03:11,040 --> 00:03:17,520
‫Şimdi buna tıklarsam, yeni bir widget blueprint'i oluşturacağım ve buna Widget Blueprint

41
00:03:17,520 --> 00:03:21,540
‫için W BP adını vereceğim, alt çizgi start game widget.

42
00:03:21,960 --> 00:03:27,240
‫Buna çift tıklarsam, Widget Blueprint editörünü açacağım ve görmeye alıştığımız

43
00:03:27,240 --> 00:03:31,560
‫Blueprint editöründen biraz farklı göründüğünü göreceksiniz.

44
00:03:31,560 --> 00:03:33,840
‫Bunun nedeni de bunun bir widget için olması.

45
00:03:33,840 --> 00:03:37,860
‫Widget'lar ekranda metin gibi şeyleri görüntülemek için iyidir.

46
00:03:37,890 --> 00:03:43,590
‫Şimdi burada çok şey var ve biz sadece metin gösteren çok basit bir widget yapacağız.

47
00:03:43,620 --> 00:03:50,310
‫Bir widget planına ekleyebileceğimiz kenarlıklar, düğmeler, onay kutuları, resimler

48
00:03:50,310 --> 00:03:53,580
‫vb. gibi bir dizi farklı öğe türü vardır.

49
00:03:53,580 --> 00:03:58,140
‫Ancak bizim ilgilendiğimiz, tam burada Metin yazan kısım.

50
00:03:58,140 --> 00:04:06,180
‫Şimdi hiyerarşi panelinde aşağıya bakın, en üstte genel WB oyun başlatma widget'ımız olduğunu göreceksiniz.

51
00:04:06,180 --> 00:04:10,500
‫Ve eğer buna tıklarsak, bu widget'ın özelliklerini değiştirebiliriz.

52
00:04:10,530 --> 00:04:14,040
‫Şimdi widget öğelerini bu hiyerarşiye sürükleyebiliriz.

53
00:04:14,040 --> 00:04:20,070
‫Bu yüzden palette tuval panelini arayacağım ve bunu hiyerarşime sürükleyeceğim.

54
00:04:21,590 --> 00:04:28,880
‫Artık bir tuval paneli, widget öğelerini yerleştirmemize ve bunları ekranda istediğimiz bir konuma ayarlamamıza olanak tanıyor, böylece

55
00:04:28,880 --> 00:04:33,020
‫bir metin öğesini doğrudan grafiğin üzerine sürükleyebiliyoruz.

56
00:04:33,020 --> 00:04:37,910
‫Ve hiyerarşide tuval panelinin altında bu yeni öğeyi göreceksiniz.

57
00:04:37,910 --> 00:04:39,360
‫Ve diyor ki, Metin.

58
00:04:39,360 --> 00:04:40,310
‫Metin bloğu.

59
00:04:40,310 --> 00:04:47,450
‫Şimdi, tırnak içindeki bu metin bloğu, bu metin widget'ı için otomatik olarak ayarlanan metindir.

60
00:04:47,450 --> 00:04:54,740
‫Ve burada, ayrıntılar panelinde, bu metin widget'ı içerik altında seçiliyken, bir metin özelliği görüyoruz

61
00:04:54,740 --> 00:04:57,170
‫ve metin bloğu olarak ayarlanmış.

62
00:04:57,170 --> 00:05:00,860
‫Ancak bunu hazır ol gibi istediğimiz herhangi bir metne ayarlayabiliriz.

63
00:05:01,250 --> 00:05:06,620
‫Şimdi, bunu hazır olmak için ayarladıktan sonra, ekrandaki metinde Hazır ol yazdığını göreceksiniz.

64
00:05:06,710 --> 00:05:13,940
‫Widget Blueprint editörü, widget'larımızı özelleştirmemize olanak tanır. Ekranın sol üst köşesindeki

65
00:05:13,940 --> 00:05:17,810
‫madalyona dikkat edin, buna çapa denir.

66
00:05:17,840 --> 00:05:22,100
‫Metin widget'ımız anchor'a göre ekrana yerleştirilir.

67
00:05:22,100 --> 00:05:27,560
‫Dolayısıyla, ekran boyutu değişirse, bu çapaya olan mesafe sabit kalacaktır.

68
00:05:27,560 --> 00:05:29,990
‫Ve eğer istersek çapayı değiştirebiliriz.

69
00:05:30,020 --> 00:05:35,690
‫Örneğin, ayrıntılar paneline gidip yuvanın altında çapaları görerek metin widget'ımızı

70
00:05:35,690 --> 00:05:39,470
‫ekranın ortasındaki bir çapaya göre ayarlayabiliriz.

71
00:05:39,470 --> 00:05:45,500
‫Ve açılır menüye tıklarsam, ortasında bir kare olan bu simgeyi seçebilirim.

72
00:05:45,500 --> 00:05:51,080
‫Şimdi bunu seçersem, çapa ekranın ortasında olur ve widget'ımın tamamen ortalanmasını istersem,

73
00:05:51,080 --> 00:05:58,430
‫burada yuva kategorisi altında X ve Y konumunu değiştirebilirim, böylece bunu X konumu için sıfıra ve Y konumu için sıfıra

74
00:05:58,430 --> 00:06:05,540
‫ayarlayabilirim ve yakınlaştırmak için fare tekerleğimle kaydırdığımda, ekranın ortasında olduğu gibi sol üst

75
00:06:05,540 --> 00:06:08,510
‫köşede olduğunu göreceksiniz.

76
00:06:08,510 --> 00:06:17,180
‫Şimdi buradaki hizalama alanı, 0 değerini seçerek bunu mükemmel bir şekilde ortalamamızı sağlayabilir. 54 X ve 0. 54 Y, ve şimdi ekranın ortasında

77
00:06:17,180 --> 00:06:21,350
‫tamamen ortalanmış durumda.

78
00:06:21,440 --> 00:06:28,250
‫Şimdi bir başlangıç oyunu widget'ı için, muhtemelen bu metni biraz daha yukarı koymak uygun olacaktır.

79
00:06:28,250 --> 00:06:35,840
‫Y Konumu için, bunu tıklayıp sola sürükleyebilirim, bu da widget plan düzenleyicisinde y ekseninin aşağı

80
00:06:35,840 --> 00:06:40,250
‫doğru işaret ettiği Y konumu değerini negatif yapar.

81
00:06:40,250 --> 00:06:46,250
‫Dolayısıyla, metin widget'ımızı yukarı kaldırmak istiyorsak, y konumunu daha düşük bir değer haline getireceğiz.

82
00:06:46,250 --> 00:06:49,130
‫Buraya -300 civarına yerleştireceğim.

83
00:06:49,130 --> 00:06:55,460
‫Şimdi görünüm kategorisinde, bu metin için bir dizi özelliği değiştirebilirim.

84
00:06:55,460 --> 00:07:01,730
‫Yazı tipi için açılır menüye tıklarsam, yazı tipi boyutunu 42 gibi bir değerle değiştirebilirim.

85
00:07:01,730 --> 00:07:04,070
‫Şimdi kalın yerine yazı karakteri için.

86
00:07:04,070 --> 00:07:06,140
‫Normal yazı karakterini seviyorum.

87
00:07:06,140 --> 00:07:07,970
‫Sanırım şimdi biraz daha iyi görünüyor.

88
00:07:07,970 --> 00:07:15,230
‫Metin widget'ı metnimizin buradaki yeşil dikdörtgenden daha büyük olduğuna dikkat edin, ancak bu yeşil dikdörtgeni yeniden boyutlandırabiliriz.

89
00:07:15,230 --> 00:07:22,880
‫Dikdörtgeni değiştirirken, burada ayrıntılar panelinde X boyutunun ve y boyutunun değiştiğini göreceksiniz.

90
00:07:22,880 --> 00:07:26,270
‫Şimdi, değiştirdiğimden beri X konumunun biraz hareket ettiğine dikkat edin.

91
00:07:26,270 --> 00:07:32,180
‫Sıfıra geri koyabilirim ve x için hizalama 0 olduğundan. 5, mükemmel bir şekilde ortalanmış.

92
00:07:32,180 --> 00:07:35,540
‫Şimdi hazır olun yazan bir widget'ım var.

93
00:07:35,570 --> 00:07:40,400
‫Geriye kalan tek şey, ekranda görebilmemiz için bunu görüntü alanına eklemektir.

94
00:07:40,400 --> 00:07:46,370
‫Play tuşuna basıp oyunu oynamaya başladığımda ekranda o widget'ı görmediğimi fark edeceksiniz.

95
00:07:46,370 --> 00:07:51,530
‫Çünkü bunu ekrana aktif olarak eklememiz gerekiyor ve bu yüzden oyun modunda bu blueprint

96
00:07:51,530 --> 00:07:56,960
‫uygulanabilir olayını yarattık, böylece bu widget'ı ekrana ekleyebiliyoruz.

97
00:07:56,960 --> 00:07:59,090
‫Şimdi bunu nasıl yapacağımızı konuşalım.

98
00:07:59,420 --> 00:07:59,840
‫Şimdi.

99
00:07:59,840 --> 00:08:05,930
‫Planlardan bir widget oluşturmanın yolu, bir widget oluşturma düğümü kullanmaktır.

100
00:08:05,960 --> 00:08:11,870
‫Herhangi bir plan için olay grafiğine sağ tıklayıp bir düğümün adını yazmaya başlayabilir ve ardından söz

101
00:08:11,870 --> 00:08:13,760
‫konusu düğümü seçebilirsiniz.

102
00:08:13,790 --> 00:08:16,040
‫İhtiyacımız olan düğüm create widget.

103
00:08:16,040 --> 00:08:20,990
‫Şimdi Serinlik Widget'ı Oluştur yazdığını göreceksiniz.

104
00:08:20,990 --> 00:08:27,020
‫Bunun nedeni, Widget Oluştur düğümünü ekler eklemez, sınıf açılır menüsünden Widget Blueprint

105
00:08:27,020 --> 00:08:29,150
‫sınıfını seçmiş olmamdır.

106
00:08:29,150 --> 00:08:34,340
‫Bu, Unreal Engine'in hangi widget sınıfını oluşturacağını bilmesi için gereklidir.

107
00:08:34,370 --> 00:08:40,880
‫Şimdi, bir widget oluşturma düğümü kullandıktan sonra, bu widget'ı görünüm alanına eklemek için bir görünüm alanına

108
00:08:40,880 --> 00:08:45,290
‫ekle düğümü kullanıyoruz ve ardından bunu oyunda ekranda görebiliyoruz.

109
00:08:45,320 --> 00:08:52,700
‫Yürütme kablolarının bağlı olduğuna ve ayrıca create widget düğümünün bu mavi çıktıyı döndürdüğüne dikkat edin;

110
00:08:52,700 --> 00:08:59,300
‫add to viewport'un viewport'a hangi widget'ın ekleneceğini bilmesi gerektiğinden ve create widget

111
00:08:59,300 --> 00:09:06,290
‫düğümü bu widget'ın değerini döndürdüğünden, add to viewport'taki hedef girişe bağlanmalıdır.

112
00:09:06,290 --> 00:09:11,570
‫Artık blueprint'lerde nasıl widget oluşturacağınızı bildiğinize göre, BP tune tanks oyun modu sınıfına

113
00:09:11,570 --> 00:09:14,960
‫girecek ve bir widget oluşturma düğümü kullanacaksınız.

114
00:09:14,990 --> 00:09:20,390
‫Bunu blueprint uygulanabilir olay yürütme kablosundan bağlayacaksınız.

115
00:09:20,500 --> 00:09:21,910
‫Oyuna Başla dedik.

116
00:09:21,910 --> 00:09:29,800
‫Şimdi Widget Oluştur düğümünde, oluşturulacak widget sınıfını seçmemiz gerekiyor, bu nedenle WB başlangıç oyunu widget'ını,

117
00:09:29,800 --> 00:09:36,700
‫yeni oluşturduğumuz yeni widget planını seçin ve ardından bu yeni widget'ı görüntü alanına eklemek ve yürütme kablolarını

118
00:09:36,700 --> 00:09:40,960
‫bağlamak için görüntü alanına ekle düğümünü kullanın.

119
00:09:40,960 --> 00:09:47,560
‫Widget oluşturmanın geri dönüş değerini görüntü alanına ekle'deki hedef girdiye bağlamayı unutmayın.

120
00:09:47,560 --> 00:09:52,900
‫Bu yüzden videoyu duraklatın ve bu düğümleri ayar tankının oyun modu planına şimdi ekleyin.

121
00:09:56,670 --> 00:10:03,090
‫Burada Tune Tanks Oyun Modu Blueprint'indeyim ve sağ tıklayıp widget oluştur yazacağım ve

122
00:10:03,090 --> 00:10:05,700
‫Widget Düğümü Oluştur'u seçeceğim.

123
00:10:05,730 --> 00:10:07,830
‫Şimdi Construct None yazdığına dikkat edin.

124
00:10:07,830 --> 00:10:13,600
‫Bunun nedeni, sınıf açılır menüsünde uygun widget sınıfını seçene kadar bunu söyleyecek olmasıdır.

125
00:10:13,620 --> 00:10:18,210
‫Ancak bunu yapmadan önce, etkinlik başlangıç oyunundan yürütme kablosunu bağlayacağım.

126
00:10:18,210 --> 00:10:24,720
‫Böylece, blueprint uygulanabilir olay başlatma oyunumuz C++'dan çağrılır çağrılmaz bu işlevselliğin

127
00:10:24,720 --> 00:10:26,700
‫yürütülmesini sağlarız.

128
00:10:26,970 --> 00:10:34,830
‫Şimdi sınıf açılır menüsü için WP Start Game Widget'ı seçeceğim ve şimdi Node'un başlığı Create

129
00:10:34,830 --> 00:10:38,700
‫WP Start Game Widget Widget olarak değişecek.

130
00:10:38,820 --> 00:10:41,880
‫Şimdi bunun bir widget oluşturma düğümü olduğunu görebiliriz.

131
00:10:41,910 --> 00:10:48,660
‫Şimdi yürütme teline tıklayıp dışarı sürükleyeceğim ve ardından görüntü alanına ekle yazacağım.

132
00:10:48,660 --> 00:10:54,720
‫Ve sonra görüntü alanına ekle'yi seçersem, yürütme kabloları benim için otomatik olarak bağlanır,

133
00:10:54,720 --> 00:11:01,410
‫ancak widget oluşturmadan dönen değeri görüntü alanına ekle için hedef girişe bağlamaz.

134
00:11:01,410 --> 00:11:04,070
‫Bu yüzden bunu kendim tıklayıp sürüklemem gerekiyor.

135
00:11:04,080 --> 00:11:10,920
‫Şimdi Start Game C++ ve oyun modu sınıfından çağrıldığında, WP Start Game widget'ına dayalı yeni

136
00:11:10,920 --> 00:11:19,500
‫bir widget oluşturacak olan bu blueprint mantığını yürüteceğiz ve ardından bunu görüntü alanına ekleyeceğiz.

137
00:11:19,500 --> 00:11:23,220
‫Oynat'a tıklayacağım ve işte Get Ready widget'ı.

138
00:11:23,400 --> 00:11:29,550
‫Şimdi bunun bir geri sayım sayacı göstereceğinden bahsettik, ancak bu işlevi henüz uygulamadık,

139
00:11:29,550 --> 00:11:32,220
‫bu yüzden yakında gelecek.

140
00:11:32,490 --> 00:11:39,090
‫Özetle, Start Game Widget Blueprint'i oluşturduk ve şimdilik üzerinde sadece Get ready yazan bir

141
00:11:39,090 --> 00:11:39,930
‫metin var.

142
00:11:40,260 --> 00:11:46,740
‫Ayrıca bu widget'ı görüntü alanına eklemek için bir create widget düğümü ve bir add to viewport düğümü kullandık, böylece

143
00:11:46,740 --> 00:11:48,990
‫oyun başlar başlamaz onu görebileceğiz.

144
00:11:48,990 --> 00:11:55,620
‫Ve bu işlevi, oyun modu C++ sınıfında oluşturduğumuz Oyuna Başla adlı blueprint uygulanabilir olayımızı

145
00:11:55,620 --> 00:12:02,460
‫kullanarak başlattık. Gelecek videolarda, bu widget'taki metni çalışma zamanında değiştireceğiz, böylece

146
00:12:02,460 --> 00:12:09,270
‫oyuna başlama zamanlayıcısında ne kadar süre kaldığını gösterecek, böylece oyuncu oyunu gerçekten oynamaya

147
00:12:09,270 --> 00:12:13,140
‫başlamadan önce ne kadar beklemesi gerektiğini bilecek.

148
00:12:13,860 --> 00:12:14,850
‫Yakında görüşürüz.

