﻿1
00:00:04,370 --> 00:00:05,390
‫Merhaba ve hoş geldiniz.

2
00:00:05,390 --> 00:00:12,170
‫Bu derste, bağımlılık enjeksiyonu adı verilen bir teknik kullanarak hareket ettirici ve tetikleyici arasındaki

3
00:00:12,170 --> 00:00:18,230
‫bağlantıyı kuracağız, böylece dersin sonunda çirkin yaratığı içeri sokarsak kapı aşağı hareket edecek

4
00:00:18,230 --> 00:00:20,810
‫ya da en azından kısmen hareket edecek.

5
00:00:20,810 --> 00:00:24,260
‫İçeri dalalım ve bunun nasıl çalıştığını görelim.

6
00:00:25,080 --> 00:00:26,460
‫Ben de bir fincan aldım.

7
00:00:26,490 --> 00:00:33,030
‫Fizik kolu için bağımlılık dediğimiz bir bağımlılık olduğunu gördük.

8
00:00:33,030 --> 00:00:40,350
‫Etrafta bir yerde bir fizik kolu bileşeni olmadığı sürece bu tutucu işini yapamaz, sadece tetikleyici

9
00:00:40,350 --> 00:00:42,960
‫bileşenin aynı olduğu görülür.

10
00:00:42,960 --> 00:00:50,100
‫Tetikleyici bileşenin işini düzgün bir şekilde yapabilmesi için bir taşıyıcı bileşene erişimi olması gerekir.

11
00:00:50,460 --> 00:00:57,360
‫Ancak, bu durumda durum biraz daha karmaşıktır çünkü gizli kapımız söz konusu olduğunda,

12
00:00:57,360 --> 00:01:02,400
‫tetikleyici ve hareketli nesne aynı aktörün içindedir.

13
00:01:02,730 --> 00:01:08,220
‫Böylece aktör üzerinde a türünde bir bileşen bularak bir nesne elde edebilirsiniz.

14
00:01:08,220 --> 00:01:14,490
‫Ama ya senaryomda bu tür bir esnekliğe izin vermek için tetiğimin odanın iyi hareket

15
00:01:14,490 --> 00:01:20,760
‫eden aktörden farklı bir yerinde olmasını istediğim bir durum olursa.

16
00:01:20,760 --> 00:01:26,940
‫Tetikleyicinin gidip kendi bağımlılıklarını bulması gerekmeyecek şekilde olmasını istiyoruz.

17
00:01:26,940 --> 00:01:30,330
‫Ve aslında bu tür bir program konsepti için bir isim var.

18
00:01:30,330 --> 00:01:32,640
‫Buna bağımlılık enjeksiyonu denir.

19
00:01:32,640 --> 00:01:37,680
‫Temel olarak, "Başka bir nesneye ihtiyacım var ama onu kendim bulamıyorum ya da kendim bulmak istemiyorum"

20
00:01:37,680 --> 00:01:40,230
‫diyen bir şeyimiz olduğu durumda söz konusudur.

21
00:01:40,290 --> 00:01:47,940
‫Ve genellikle kendi işini yapan nesneye bırakmamak, onu bir nesneyi ele geçirmeye çalışmak gibi başka

22
00:01:47,940 --> 00:01:50,850
‫bir işle uğraştırmak mantıklıdır.

23
00:01:51,300 --> 00:02:00,810
‫Bunu yapabilmemizin yolu, planların tetikleyici bileşene bir taşıyıcıyı nerede bulacağını söylemesi için bir mekanizma

24
00:02:00,810 --> 00:02:02,730
‫oluşturmaktır.

25
00:02:02,910 --> 00:02:09,330
‫Bunu yapmanın yolu da tetikleyici bileşenimiz üzerinde çağrılabilir bir blueprint işlevi oluşturmaktır.

26
00:02:09,810 --> 00:02:11,220
‫Yani halka açık olacak.

27
00:02:11,220 --> 00:02:16,980
‫Bunu tick bileşeninin altındaki public bölümüne koyacağız ve bir U fonksiyonu

28
00:02:16,980 --> 00:02:22,710
‫olacak, böylece parantez içinde blueprint çağrılabilir olacak.

29
00:02:23,280 --> 00:02:26,130
‫Ve bu işlev için fazla bir şey olmasına gerek yoktur.

30
00:02:26,130 --> 00:02:33,330
‫Bir şey döndürmesi gerekmediği için void olacak, ancak set mover olacak, böylece mover'a

31
00:02:33,330 --> 00:02:40,860
‫bir bağlantı ayarlayacak ve mover'a bir bağlantı ayarlaması için bir mover bileşenine bir

32
00:02:40,860 --> 00:02:43,620
‫işaretçi alması gerekiyor.

33
00:02:43,620 --> 00:02:52,440
‫Yani bu sizin taşıyıcı yıldızınız olacak ve buna bu şekilde taşıyıcı diyebiliriz ve bu satırın sonuna noktalı virgül koyabiliriz.

34
00:02:52,830 --> 00:02:55,350
‫Ve bunu bir yerde saklamamız gerekiyor.

35
00:02:55,350 --> 00:02:57,300
‫Bu yüzden yeni bir özel değişken oluşturacağız.

36
00:02:57,300 --> 00:03:02,280
‫Bu yeni bir mülk olmayacak ve sadece bizim de taşıyıcı olarak adlandıracağımız

37
00:03:02,280 --> 00:03:04,530
‫bir U hareket göstergesi olacak.

38
00:03:04,560 --> 00:03:12,900
‫Bunun gibi ve yapacağımız şey, bu set mover'ı CPP'de uygulamaktır, böylece bu hareketi varsayılan olarak null

39
00:03:12,900 --> 00:03:15,660
‫olacak bir işaretçi olarak ayarlar.

40
00:03:16,050 --> 00:03:17,790
‫Ve bir şey daha yapmamız gerekiyor.

41
00:03:17,790 --> 00:03:20,640
‫Taşıyıcımız için başlık dosyasını dahil etmeliyiz.

42
00:03:21,150 --> 00:03:26,370
‫Şimdi bu durumda, başlık dosyası tetikleyici bileşenle aynı klasörde

43
00:03:26,370 --> 00:03:38,100
‫olduğu için, tek yapmamız gereken hash include quote mover H'dir ve bu, tetikleyici bileşenin taşıyıcı türünden haberdar olmasını sağlayacaktır.

44
00:03:38,280 --> 00:03:40,230
‫Şimdi tetikleyici bileşenimize geçelim.

45
00:03:40,230 --> 00:03:46,530
‫CP Ve bunu set mover'ı uygulayacağımız tick bileşenimizin altına koyacağım.

46
00:03:46,530 --> 00:03:52,500
‫Bileşeni tetiklediğiniz sınıfı daha önce koyacağız ve girintileyeceğiz.

47
00:03:53,400 --> 00:03:55,590
‫Noktalı virgülü kaldırın ve parantez ekleyin.

48
00:03:55,590 --> 00:04:00,150
‫Ve esasen burada yapmamız gereken tek şey, sadece C++ dosyasındaki adı değiştirmek olacak.

49
00:04:00,150 --> 00:04:06,060
‫Parametrelerin adının başlık ve C++ arasında eşleşip eşleşmediği aslında önemli değildir.

50
00:04:06,060 --> 00:04:12,540
‫Bu yüzden burada bunu değiştirebilir ve yeni hareket ettiricinin hareket ettiriciyi ayarlamak için gelen şey olduğunu söyleyebiliriz.

51
00:04:12,630 --> 00:04:20,010
‫Ve böylece yerel değişkenimizi, sınıf değişkenimiz mover'ı yeni mover'a eşit olarak ayarlayabiliriz.

52
00:04:20,010 --> 00:04:27,030
‫Şimdi, bu yeniden adlandırma adımını atlamamanız oldukça önemlidir çünkü girdi parametresi sınıftaki

53
00:04:27,030 --> 00:04:34,170
‫değişkenlerden biriyle aynı addaysa, unreal varsayılan olarak bunu bir hata olarak ayarlayacaktır.

54
00:04:34,170 --> 00:04:39,720
‫Buna gölgeleme denir ve Unreal bunu yapmanızı istemez, bu nedenle parametre adınızın artık değişkene

55
00:04:39,720 --> 00:04:44,970
‫farklı olduğundan emin olmanız gerekir, çünkü bu yeni işlevler her zaman canlı kodlama değişiklikleriyle

56
00:04:44,970 --> 00:04:46,260
‫görünmez.

57
00:04:46,260 --> 00:04:52,920
‫Düzenleyiciyi kapatacağım, Visual Studio kodundan yeniden derleyeceğim ve ardından yeni projeden yeniden başlatacağım.

58
00:04:52,950 --> 00:04:58,950
‫Şimdi içerik çekmecesine gidelim, gizli duvar planımızı açalım ve ardından

59
00:04:58,950 --> 00:05:06,080
‫olay grafiğindeki Begin Play düğümümüzden buradan çekip set mover'ı arayalım.

60
00:05:06,090 --> 00:05:08,190
‫Şimdi burada iki seçenek olduğuna dikkat edin.

61
00:05:08,190 --> 00:05:15,750
‫Birincisi, taşıyıcı olarak da adlandırılan bileşeni ayarlamak ve diğeri tetikleyici bileşen üzerindeki bir işlevdir.

62
00:05:15,750 --> 00:05:18,840
‫Bu yüzden tetikleyici bileşen üzerinde bir fonksiyon olanı seçmek istiyoruz.

63
00:05:19,050 --> 00:05:27,120
‫Ve sonra yapmak istediğimiz şey, taşıyıcı bileşenimizi bu işleve diğer argümanlar olarak sürüklemektir ve bu işimizi

64
00:05:27,120 --> 00:05:28,110
‫görecektir.

65
00:05:28,110 --> 00:05:31,350
‫Taşıyıcıyı oyun başlangıcına ayarlar.

66
00:05:31,350 --> 00:05:37,800
‫Şimdi esasen olmasını istediğimiz şey, tetikleyici bileşenimizin burada should move boolean'ını

67
00:05:37,800 --> 00:05:41,400
‫ayarlaması ve ayarlaması gerektiğidir.

68
00:05:41,400 --> 00:05:46,110
‫Bu nedenle, mover ve mover'da bazı genel işlevler oluşturmanız için size meydan okuyacağım.

69
00:05:46,110 --> 00:05:51,780
‫CP Ayarlanmalı, hareket etmeli ve bu özellik değişkenini güncellemelidir.

70
00:05:51,780 --> 00:05:56,970
‫Aslında, bunu artık yeni bir özellik olmaktan çıkarabilirsiniz çünkü şimdi kod aracılığıyla ayarlayacağız

71
00:05:56,970 --> 00:05:59,760
‫ve sonra bunu genel bölüme koyabilirsiniz.

72
00:05:59,760 --> 00:06:04,740
‫Herkese açık olması gerekiyor çünkü tetikleyici bileşenimizden erişmeye çalışacağız.

73
00:06:04,740 --> 00:06:11,850
‫Ve bunu, tetikleyici bileşeninde sahip olduğumuz hareket işaretçisi üzerinde, tik bileşeni ayarından, uygun boolean'dan, kilidi

74
00:06:11,850 --> 00:06:18,960
‫açmasını veya tekrar kilitlemesini, videoyu duraklatmasını ve denemesini isteyip istemediğimizi çağırabilirsiniz.

75
00:06:22,250 --> 00:06:23,690
‫Tamam, tekrar hoş geldin.

76
00:06:23,690 --> 00:06:29,410
‫Bu yüzden should move özelliğini kaldıracağım, TTIC bileşeninin

77
00:06:29,420 --> 00:06:39,800
‫hemen altındaki public bölümüne gideceğim ve should move olarak adlandıracağımız bir boolean alarak void set

78
00:06:39,800 --> 00:06:43,010
‫should move oluşturacağım.

79
00:06:43,280 --> 00:06:51,560
‫Ve sonra bunu alıp move CP'ye gideceğiz ve noktalı virgülü değiştirerek, you move

80
00:06:51,560 --> 00:07:00,920
‫colon, colon sınıfını ekleyerek uygulayacağız ve sonra temel olarak buna yeni should move

81
00:07:00,920 --> 00:07:08,030
‫diyebiliriz ve should move eşittir yeni should move diyebiliriz.

82
00:07:08,030 --> 00:07:12,860
‫Şimdi merak ediyor olabilirsiniz, neden değişkenlerin kendilerini doğrudan ayarlayabilmemiz için

83
00:07:12,860 --> 00:07:14,660
‫herkese açık hale getirmiyoruz?

84
00:07:14,780 --> 00:07:22,520
‫Bu genellikle C++'da iyi bir uygulama değildir çünkü birinin değişkenlerinizi değiştirmesine izin verirseniz, onlara ne olabileceğini

85
00:07:22,520 --> 00:07:24,620
‫asla bilemezsiniz.

86
00:07:24,620 --> 00:07:32,090
‫Oysa bunu sizin için yapacak bir yönteminiz varsa, daha sonra genel işlevlerinizi değiştirmek zorunda kalmadan dahili değişkenleri nasıl

87
00:07:32,090 --> 00:07:38,240
‫yapılandırdığınızı değiştirmenize olanak tanır, bu da farklı sınıflarda yapmanız gereken daha az güncelleme

88
00:07:38,240 --> 00:07:39,920
‫olduğu anlamına gelir.

89
00:07:39,920 --> 00:07:46,070
‫Bu nedenle, genel bir kural olarak, diğer sınıflardaki değişkenlere erişmemiz gerekiyorsa her zaman setter ve getter

90
00:07:46,070 --> 00:07:46,850
‫kullanırız.

91
00:07:46,850 --> 00:07:52,100
‫Şimdi bu yeni fonksiyonu oluşturduğumuza göre, şu anda günlük mesajlarımızın bulunduğu trig

92
00:07:52,100 --> 00:07:53,570
‫bileşeni CP'ye gidelim.

93
00:07:53,570 --> 00:08:01,670
‫Yapmak istediğimiz şey taşıyıcı işaretçimize erişmek, bu yüzden taşıyıcı ok seti hareket etmeli yapacağız.

94
00:08:01,670 --> 00:08:06,140
‫Ve elimizde kabul edilebilir bir aktör varsa, bu doğru olmalıdır.

95
00:08:06,140 --> 00:08:08,600
‫Noktalı virgülü satır sonuna taşımalıyız.

96
00:08:08,690 --> 00:08:12,200
‫Diğer durumda ise, o zaman muhtemelen yapmamalıyız.

97
00:08:12,200 --> 00:08:20,510
‫Bu yüzden ok setini hareket ettireceğiz ve parantez içine false koyarak yöntemimin sonundaki fazladan R'yi kaldıracağız

98
00:08:20,510 --> 00:08:26,780
‫ve şimdi bu durumda yeniden derleyelim çünkü bu işlevi yalnızca C++ ülkesine ekledim ve

99
00:08:26,780 --> 00:08:30,020
‫blueprint çağrılabilir değil.

100
00:08:30,020 --> 00:08:34,940
‫Bu işlevin çalışması için editörü yeniden başlatmam gerektiğini sanmıyorum, çıktı günlüğümüzü

101
00:08:34,940 --> 00:08:39,530
‫kapatın, gargoyle'ımıza doğru gidin ve oynamaya başlayın ve onu alın.

102
00:08:39,770 --> 00:08:49,400
‫Bu kafesten çıkalım ve oyuğa sokalım, aşağıya doğru hareket ediyor, ancak çirkin adam düştüğü anda duruyor,

103
00:08:49,400 --> 00:08:56,600
‫bu ideal değil çünkü çirkin adam gerçekten yerinde tutulmuyor ve duvar tamamen

104
00:08:56,600 --> 00:08:59,060
‫aşağıya inmiyor.

105
00:08:59,150 --> 00:09:03,020
‫Ve fiziği simüle ettiği için, o oyuktan dışarı fırlayacak, değil mi?

106
00:09:03,020 --> 00:09:10,580
‫Bu yüzden yapmamız gereken şey, onu tetikleme alanımıza bıraktığımızda orada sabitlendiğinden ve öylece kaldığından

107
00:09:10,580 --> 00:09:11,780
‫emin olmaktır.

108
00:09:11,780 --> 00:09:14,210
‫Bu da bir sonraki dersin konusu olacak.

109
00:09:14,210 --> 00:09:15,200
‫Orada görüşürüz.

