﻿1
00:00:03,980 --> 00:00:05,210
‫Merhaba ve hoş geldiniz.

2
00:00:05,210 --> 00:00:11,840
‫Bu derste, Blueprint Olay grafiğimizde neler olup bittiğini kolayca okuyabilmemiz ve anlayabilmemiz

3
00:00:11,840 --> 00:00:17,870
‫için plan karmaşamızı alıp düzgün bir şekilde fonksiyonlar halinde düzenleyeceğiz.

4
00:00:17,870 --> 00:00:19,850
‫Şimdi bunu nasıl yapacağımızı görelim.

5
00:00:20,600 --> 00:00:26,030
‫Şimdi, olay grafiğimizi yakınlaştırırsak, çok gürültülü olmaya başladığını görebiliriz.

6
00:00:26,030 --> 00:00:28,610
‫Ayrıca hiçbir şeye bağlı olmayan birkaç düğüm de görebiliyorum.

7
00:00:28,610 --> 00:00:34,340
‫Sileceğim bir get düğümü var, bir varlık, M0 düğümü, ancak çok gürültülü olduğunu görebilirsiniz.

8
00:00:34,340 --> 00:00:36,860
‫Burada neler olduğunu anlamak zorlaşıyor.

9
00:00:36,860 --> 00:00:45,380
‫Şimdi, insanların yaptığı tipik bir çözüm şöyle demek: Buradaki düğüm bloğu tamamen mermiyi ortaya çıkarmakla

10
00:00:45,380 --> 00:00:46,010
‫ilgili.

11
00:00:46,010 --> 00:00:47,300
‫Böylece bunları seçebilirim.

12
00:00:47,300 --> 00:00:54,080
‫C tuşuna basabilirim ve bunun etrafına yorum bloğu adı verilen bir blok koyacaktır.

13
00:00:54,080 --> 00:01:02,360
‫Ve sonra spawn projectiles yazabilirim ve bu bana o kod bloğunun ne yaptığını bildirir.

14
00:01:02,360 --> 00:01:05,410
‫Bu kesinlikle kodunuzu düzenlemenin bir yoludur.

15
00:01:05,420 --> 00:01:12,680
‫Ancak, bence bu en iyi yol değil ve bunu yapmak için fonksiyon adı verilen daha iyi araçlarımız var.

16
00:01:12,680 --> 00:01:14,420
‫Peki işlevler nelerdir?

17
00:01:14,780 --> 00:01:20,510
‫Fonksiyonlar plan bloklarını yürütür ve oyunlarımızın bir şeyler yapmasını sağlar.

18
00:01:20,510 --> 00:01:25,310
‫Unreal Real tarafından sağlanan birçok düğüm aslında zaten işlevdir.

19
00:01:25,310 --> 00:01:27,380
‫Bunlarla karşılaştık.

20
00:01:27,380 --> 00:01:33,170
‫Örneğin spawn actor mermi düğümümüze gidip yakınlaştırdığınızda, bu bir fonksiyondur.

21
00:01:33,170 --> 00:01:39,410
‫İmpuls eklemeye baktığımızda, bu aslında bu düğümlerin çoğu için bir işlevdir, hatta bir yürütme

22
00:01:39,410 --> 00:01:44,090
‫pimi olmayan ve mavi olmayan ileri aktif vektör gibi şeyler de bir işlevdir,

23
00:01:44,090 --> 00:01:50,300
‫çünkü sol üstte işlev anlamına gelen küçük bir f sembolü vardır, ancak Unreal'in sağladığı işlevlerle

24
00:01:50,300 --> 00:01:52,370
‫sınırlı değiliz.

25
00:01:52,370 --> 00:01:56,150
‫Kendi fonksiyonlarımızı da oluşturabiliriz ve bunu yapmak gerçekten çok kolaydır.

26
00:01:56,150 --> 00:01:57,050
‫Blueprint'te.

27
00:01:57,050 --> 00:02:02,630
‫Düzenli kalmamızı ve kod bloklarını yeniden kullanmamızı sağlarlar.

28
00:02:02,630 --> 00:02:06,500
‫Yani bu bir yorumdan daha iyidir çünkü bir yorumu kopyalayıp yapıştırmanız gerekir.

29
00:02:06,500 --> 00:02:12,620
‫Oysa bir fonksiyon, bir kod bloğunu birden fazla kullanım yeri arasında paylaştırmamızı sağlar.

30
00:02:12,620 --> 00:02:19,280
‫Şimdi bunun gibi bir şeyi nasıl bir kod bloğuna dönüştürebileceğimize bir göz atalım.

31
00:02:19,610 --> 00:02:24,620
‫Öncelikle yorum bloğunu silebiliriz, çünkü bunun gerekli olduğunu düşünmüyorum.

32
00:02:24,620 --> 00:02:31,340
‫Bunun yerine, get player'dan impulse eklemeye kadar tüm düğümleri seçeceğim, üzerlerine sağ

33
00:02:31,340 --> 00:02:35,180
‫tıklayacağım ve collapse to function'ı seçeceğim.

34
00:02:35,360 --> 00:02:42,920
‫Bu da yeni bir blok oluşturur ve daha önce orada bulunan tüm düğümlerin yerini alır.

35
00:02:42,920 --> 00:02:46,520
‫Şimdi bu işleve sol taraftaki bölmede görebileceğiniz bir ad vereceğim.

36
00:02:46,520 --> 00:02:53,870
‫Planım bölmesindeki işlev bölümünde yeni bir işlev oluşturdu ve otomatik olarak yeniden adlandırmam için

37
00:02:53,870 --> 00:02:59,480
‫seçili hale getirdi çünkü bu işlevleri kesinlikle yeniden adlandırmalıyız ve buna

38
00:02:59,480 --> 00:03:02,120
‫spawn projectile adını vereceğim.

39
00:03:02,120 --> 00:03:09,530
‫Ve iyi bir adlandırma program için kesinlikle hayati önem taşır çünkü kod esasen iletişimle ilgilidir.

40
00:03:09,530 --> 00:03:14,750
‫Ne yazdığımızı anlayabilmek için kendimizle iletişim kurmaya çalışıyoruz.

41
00:03:14,750 --> 00:03:17,210
‫Gelecekte kendimizle iletişim kurmaya çalışıyoruz.

42
00:03:17,210 --> 00:03:21,050
‫Bu projeye geri döndüğümüzde, onu neden belli bir şekilde yazdığımızı unuttuk.

43
00:03:21,050 --> 00:03:25,310
‫Ekipler halinde çalıştığınızda, ekibinizin geri kalanıyla da iletişim kurmaya çalışıyorsunuz.

44
00:03:25,340 --> 00:03:31,130
‫Bazıları kod kalitesi için iyi bir ölçütün dakika başına ne kadar olduğu olduğunu söyler.

45
00:03:31,130 --> 00:03:36,500
‫Yani bir kod parçasını okurken dakikada 50 kez "Bu da nesi?" diyorsanız, bu oldukça kötü bir koddur; eğer

46
00:03:36,500 --> 00:03:41,060
‫kodu okurken dakikada sadece bir ya da iki kez "Bu da nesi?" diyorsanız, bu muhtemelen

47
00:03:41,060 --> 00:03:44,930
‫oldukça iyi bir koddur ve her zaman bir şekilde hex'e ulaşırsınız.

48
00:03:44,930 --> 00:03:49,220
‫Bu yüzden sadece işlevlerinin sayısını azaltmaya çalışıyoruz.

49
00:03:49,220 --> 00:03:51,650
‫En önemlisi, işlevleri fiil olarak adlandırmaya eğilimliyiz.

50
00:03:51,650 --> 00:03:58,070
‫Bu kuralın daha sonra bahsedeceğimiz bazı istisnaları vardır, ancak çoğunlukla işlevler bir şeyler

51
00:03:58,070 --> 00:03:59,270
‫yapan şeylerdir.

52
00:03:59,270 --> 00:04:06,230
‫Bu yüzden sözcükler kullanıyoruz ve bu işlevi nasıl adlandıracağınızdan emin değilseniz, bir ekipte çalışıyorsanız, başka biriyle

53
00:04:06,230 --> 00:04:11,420
‫konuşabilir ve onlara bu işlevi nasıl adlandırmanız gerektiğini düşündüklerini ve onlara ne tür şeylerin

54
00:04:11,420 --> 00:04:14,060
‫mantıklı geldiğini sorabilirsiniz.

55
00:04:14,060 --> 00:04:19,760
‫Çoğu zaman bir sorunun içine o kadar gömülmüş olursunuz ki, bu sorun hakkında nasıl konuşacağınızı düşünemezsiniz.

56
00:04:19,760 --> 00:04:26,450
‫Kendinize şu soruyu soruyor olabilirsiniz: Peki, bu spawn projectile fonksiyonunu oluşturduğumda tüm kodlarım nereye

57
00:04:26,450 --> 00:04:27,170
‫gitti?

58
00:04:27,320 --> 00:04:34,610
‫Bu işlevin gerçekte nasıl uygulandığına ilişkin ayrıntılara olay grafiğinde çift tıklayarak veya Planlarım

59
00:04:34,610 --> 00:04:41,840
‫sekmesinde üzerine tıklayarak ya da Planlarım sekmesinde çift tıklayarak geri dönebilirsiniz.

60
00:04:41,840 --> 00:04:48,950
‫Ve tüm düğümlerimizin hala burada yerleşik olduğunu görebilirsiniz, sadece şimdi ayrı bir sekmedeler,

61
00:04:48,950 --> 00:04:56,240
‫böylece olay grafiği sekmenize geri dönebilir veya sadece bu işlevi gösteren Spawn projectile sekmesine

62
00:04:56,240 --> 00:04:57,980
‫dalabilirsiniz.

63
00:04:58,610 --> 00:05:05,480
‫Ve burada yeni bir düğüm olduğunu görebilirsiniz, bu küçük mor düğüm, fonksiyonumuza giriş noktasıdır.

64
00:05:05,480 --> 00:05:09,800
‫Bu, fonksiyon başladığında yapmamız gereken şeyin bu olduğunu söyler.

65
00:05:09,800 --> 00:05:11,180
‫Bu sadece bir giriş noktası.

66
00:05:11,180 --> 00:05:17,690
‫Ve her çağrıldığında, bu düğüm tetiklenecek ve fonksiyonumuzun içindeki diğer tüm düğümleri tetikleyecektir.

67
00:05:17,690 --> 00:05:19,820
‫Olay grafiğine geri dönersek.

68
00:05:19,960 --> 00:05:23,190
‫Uzaklaştırmak, belki düğümlerimizi biraz bir araya getirmek.

69
00:05:23,200 --> 00:05:26,850
‫Artık düğüm grafiğimizi çok daha küçük ve okunması kolay hale getirdik.

70
00:05:26,860 --> 00:05:33,760
‫Sanırım burada fonksiyonları çekip çıkarmamız ve bazı şeyleri değiştirmemiz için birkaç aday daha var.

71
00:05:33,940 --> 00:05:38,380
‫Bunlardan biri de cephaneyi bastığımız yer olabilir.

72
00:05:38,380 --> 00:05:43,780
‫Yani bu durumda, cephane basmak iki yerde yaptığımız bir şey.

73
00:05:43,780 --> 00:05:47,800
‫Bunu oyuna başlarken yapıyoruz ve spawn projectile'da yapıyoruz.

74
00:05:48,190 --> 00:05:54,190
‫Ve sonra diğer yer, diğer şey, bir fonksiyona çıkarabileceğimiz işlevsellik parçası, bunun

75
00:05:54,190 --> 00:06:01,200
‫yerine bir cephane azaltma fonksiyonuna koyabileceğimiz cephaneyi azalttığımız yer olacaktır.

76
00:06:01,210 --> 00:06:09,640
‫Bu yüzden size meydan okumadan hemen önce, dönüşüm düğümünü ve spawn mermisinden sonraki dizgi düğümünü

77
00:06:09,640 --> 00:06:15,280
‫silmek istiyorum çünkü bu işleri karmaşıklaştıracak.

78
00:06:15,280 --> 00:06:21,370
‫İşlevselliği yukarıdan kopyalamak istiyorum, böylece ikisi de tamamen aynı görünecek.

79
00:06:21,370 --> 00:06:29,200
‫Dolayısıyla, Begin Play'den üç düğümü kopyalayıp aşağıya yapıştırırsak ve yürütme pinlerini bağlarsak, burada tamamen aynı düğüm

80
00:06:29,200 --> 00:06:35,050
‫setine sahip olduğumuzu, ikisi arasında aynı işlevselliğe sahip olduğumuzu ve bunu bir fonksiyona

81
00:06:35,050 --> 00:06:39,970
‫çıkarmaya geldiğimizde hiçbir karışıklık olmadığını görebilirsiniz.

82
00:06:39,970 --> 00:06:43,240
‫Bu yüzden sizi daha fazla işlev oluşturmaya davet ediyorum.

83
00:06:43,240 --> 00:06:47,140
‫Yapmanızı tavsiye edeceğim ilk şey cephaneyi azaltmaktır.

84
00:06:47,140 --> 00:06:51,850
‫Yani cephanenin azaltılmasıyla ilgili üç düğümü alıp bunları bir fonksiyona dönüştürmek ve onlara

85
00:06:51,850 --> 00:06:52,720
‫bir isim vermek.

86
00:06:52,960 --> 00:06:56,020
‫İkincisi ise baskı cephanesi.

87
00:06:56,020 --> 00:07:03,310
‫Böylece cephaneyi alma, dönüştürme ve yazdırma işlevlerini tek bir fonksiyonda

88
00:07:03,310 --> 00:07:05,740
‫toplayacaksınız.

89
00:07:05,740 --> 00:07:11,500
‫Ve cephane yazdırdığımız iki alan olduğu için, bunlardan birini silip yerine işlevi getirmek

90
00:07:11,500 --> 00:07:17,020
‫isteyebilirsiniz; bunu planım bölmesinden sürükleyerek yapabilirsiniz.

91
00:07:17,260 --> 00:07:22,750
‫Ve son olarak birkaç hoş geldiniz mesajımız var, hoş geldiniz mesajı düğümlerinin çıktısı.

92
00:07:22,750 --> 00:07:24,820
‫Bunları bir baskıya dönüştürebilirsiniz.

93
00:07:24,820 --> 00:07:27,070
‫Hoş geldiniz mesajları işlevi de vardır.

94
00:07:27,100 --> 00:07:29,170
‫Videoyu duraklatın ve deneyin.

95
00:07:32,230 --> 00:07:32,740
‫Tamam.

96
00:07:32,740 --> 00:07:33,570
‫Tekrar hoş geldiniz.

97
00:07:33,580 --> 00:07:37,450
‫Bu yüzden önce azalan cephanemizi çıkaracağız.

98
00:07:37,450 --> 00:07:39,640
‫Yani buna dahil olan üç düğüm var.

99
00:07:39,640 --> 00:07:47,740
‫Fonksiyonu sağ tıklayarak daraltacağız, sonra ona Cephane Azalt diyeceğiz ve bu oldukça basit.

100
00:07:47,740 --> 00:07:51,940
‫Yani mermiyi ortaya çıkarıyoruz, cephaneyi azaltıyoruz ve sonra cephaneyi basıyoruz.

101
00:07:51,940 --> 00:07:58,210
‫Şimdi üç düğümü, get convert ve print string'i alalım ve sağ tıklayıp collapse to function'a

102
00:07:58,210 --> 00:08:02,020
‫tıklayıp bunu print ammo olarak çağıralım.

103
00:08:02,470 --> 00:08:08,590
‫Şimdi dediğim gibi, bu işlevsellik iki yerde tekrarlanıyor, bu yüzden begin play'de bunu yaptığı

104
00:08:08,590 --> 00:08:16,180
‫yeri sileceğiz ve sadece fonksiyonlar listemizden print ammo'yu sürükleyeceğiz ve yürütme pinlerini bağlayacağız,

105
00:08:16,180 --> 00:08:19,840
‫böylece print string'imizden sonra çalışacak.

106
00:08:20,200 --> 00:08:25,630
‫Bu da beni oluşturmak istediğim son fonksiyona getiriyor, buna hoş geldin mesajlarını yazdır diyeceğimizi söylemiştik.

107
00:08:25,630 --> 00:08:32,050
‫Bu yüzden to print strings after being in play collapse to fonksiyonunu seçeceğim ve ona print

108
00:08:32,050 --> 00:08:34,390
‫welcome messages diyeceğim.

109
00:08:34,390 --> 00:08:42,040
‫Ve bu düğüm, şimdi tüm düğümlerimizi yeniden düzenleyerek bunların tümünü tek bir ekranda tam olarak okumayı çok daha kolay hale

110
00:08:42,040 --> 00:08:43,200
‫getirebiliriz.

111
00:08:43,210 --> 00:08:49,960
‫Oyunumuzun işlevselliğini anlamanın artık çok daha kolay olduğunu görebilirsiniz çünkü hepsi tek

112
00:08:49,960 --> 00:08:56,380
‫bir ekrana sığıyor ve benzer bir soyutlama ve anlama düzeyine güzel bir şekilde getiriliyor.

113
00:08:56,380 --> 00:09:02,830
‫Ve bu, kendi kendini belgeleyen kod olarak adlandırdığımız şeydir, çünkü ne yaptığını açıklamak için yorumlara veya

114
00:09:02,830 --> 00:09:04,900
‫belgelere ihtiyaç duymayan koddur.

115
00:09:04,900 --> 00:09:07,150
‫İngilizce gibi okunuyor.

116
00:09:07,270 --> 00:09:08,110
‫Harika bir şey.

117
00:09:08,110 --> 00:09:10,120
‫Bir sonraki derste görüşürüz.

