﻿1
00:00:04,400 --> 00:00:05,720
‫Merhaba ve hoş geldiniz.

2
00:00:05,720 --> 00:00:11,870
‫Bu derste, vektörlere ve genel olarak C++'daki struct'lar gibi daha karmaşık şeylere

3
00:00:11,870 --> 00:00:19,810
‫ve bir struct'tan bunları hem ayarlamak hem de almak için ayrı parçalara nasıl erişebileceğimize bakacağız.

4
00:00:19,820 --> 00:00:20,720
‫Hadi içeri dalalım.

5
00:00:21,260 --> 00:00:27,800
‫Böylece C++'da temel veri türleriyle nasıl başa çıkacağımızı, değişkenler oluşturmayı, onlara atama yapmayı ve hatta onlarla bazı temel

6
00:00:27,800 --> 00:00:29,870
‫aritmetik işlemleri yapmayı öğrendik.

7
00:00:29,870 --> 00:00:35,570
‫Peki ya vektörler ve dönüşümler gibi daha karmaşık türlerle uğraşmak istersek ne olacak?

8
00:00:35,840 --> 00:00:38,090
‫Aslında süreç birbirine çok benziyor.

9
00:00:38,090 --> 00:00:41,630
‫Halihazırda sahip olduğumuz bazı test kodlarını temizleyerek başlayalım.

10
00:00:41,630 --> 00:00:43,580
‫Tüm mülklerimi sileceğim.

11
00:00:43,580 --> 00:00:46,700
‫Benim için bu 26'dan 51'e kadar olan hat.

12
00:00:46,940 --> 00:00:54,350
‫Ayrıca C++ dosyasına geçeceğim ve az önce sildiğim değişkenlerle ilgili tüm işleri yaptığım

13
00:00:54,350 --> 00:00:56,900
‫19 ila 23. satırları sileceğim.

14
00:00:56,900 --> 00:01:01,760
‫Yani şimdi Begin Play tamamen boş ve aslında en başa döndük.

15
00:01:02,570 --> 00:01:06,350
‫Şimdi yapmak istediğim şey yeni bir you özelliği eklemek.

16
00:01:06,350 --> 00:01:16,010
‫Bu yüzden herhangi bir yeri tekrar büyük harflerle düzenleyin ve buna F vektörü türünü vereceğim, büyük F, büyük V harflerine dikkat

17
00:01:16,010 --> 00:01:22,190
‫edin ve Blueprint'te ele aldığımız vektörlerle bu şekilde başa çıkacağız.

18
00:01:22,190 --> 00:01:27,470
‫Bunlar yüzey altında aynı vektörlerdir, ancak C++'da bu şekilde yazıyoruz.

19
00:01:27,470 --> 00:01:33,710
‫Ondan önce gelen F sadece bunun bir yapı olduğunu bilmemizi sağlar, aynı şekilde hareketli platformu takip

20
00:01:33,710 --> 00:01:37,010
‫eden A da bunun bir aktör olduğunu bilmemizi sağlar.

21
00:01:37,010 --> 00:01:38,390
‫Bu C++ ile ilgili bir şey değil.

22
00:01:38,390 --> 00:01:44,240
‫Bu, farklı sınıfları, yapıları ve türleri adlandırmak için gerçek olmayan bir adlandırma kuralıdır.

23
00:01:44,630 --> 00:01:49,400
‫O zaman yapacağımız şey bu değişkene bir isim vermektir ve bu değişken bir float ya da

24
00:01:49,400 --> 00:01:51,080
‫int ile aynı şekilde çalışır.

25
00:01:51,080 --> 00:01:53,600
‫Örneğin buna benim şamandıram diyebiliriz.

26
00:01:53,600 --> 00:01:55,010
‫Hiç boşluk olmamalıdır.

27
00:01:55,160 --> 00:01:59,120
‫Ve eğer burada satırın sonuna noktalı virgül koyarsak, o zaman bu kadar.

28
00:01:59,120 --> 00:02:06,170
‫Editördeki ayrıntılar bölmemizde görülebilecek yeni bir değişken bildirdik, ancak bu benim için yeterli

29
00:02:06,170 --> 00:02:07,100
‫değil.

30
00:02:07,100 --> 00:02:14,030
‫Aslında buna varsayılan 000 değerinden farklı bir varsayılan değer vermek istiyorum.

31
00:02:14,150 --> 00:02:17,690
‫Bunu yapmak için sözlüğümüzü yeni bir terimle güncellememiz gerekiyor.

32
00:02:17,690 --> 00:02:25,070
‫C++'da yeni bir yapı veya sınıf değeri oluşturan bir yapıcıya ihtiyacımız var.

33
00:02:25,160 --> 00:02:33,110
‫Vektör için bir kurucu oluşturacak olsaydık, bunun çalışma şekli bir değer atamak istememizdir, böylece equals

34
00:02:33,110 --> 00:02:34,700
‫tuşuna basarız.

35
00:02:34,700 --> 00:02:41,330
‫Ve tipik olarak tamsayılar veya kayan sayılarla uğraşırken, sadece bir veya doğru gibi bir şey kullanabilirdik.

36
00:02:41,330 --> 00:02:46,280
‫Bu temel tiplerin değerini ayarlamamızı sağlayan yerleşik değerler vardı.

37
00:02:46,280 --> 00:02:53,120
‫Ancak struct gibi daha ayrıntılı türlerimiz olduğunda, yapıcıyı kullanmamız gerekir ve yapıcı her

38
00:02:53,120 --> 00:02:56,240
‫zaman veri türüyle aynı ada sahip olacaktır.

39
00:02:56,240 --> 00:03:02,660
‫Böylece f vektörü tam olarak aynı şekilde yazılır ve sonra bazı parantezler açarsınız ve parantezlerin

40
00:03:02,660 --> 00:03:05,930
‫içinde istediğiniz değerleri verirsiniz.

41
00:03:05,930 --> 00:03:08,600
‫Yani X, Y ve Z bir vektörü oluşturur.

42
00:03:08,600 --> 00:03:15,050
‫Yani bir, iki ve üçü virgülle ayırabiliriz ve sonra parantezleri kapatıp satırın sonuna

43
00:03:15,050 --> 00:03:17,000
‫noktalı virgül koyarız.

44
00:03:17,000 --> 00:03:23,480
‫Bu da bu vektör için X, Y ve Z'de bir, iki ve üç varsayılan değerlerini verecektir.

45
00:03:23,480 --> 00:03:24,590
‫Hadi deneyelim.

46
00:03:24,740 --> 00:03:27,470
‫Unreal'a geri dönün ve derleme düğmesine basın.

47
00:03:27,560 --> 00:03:34,550
‫Bu işlem başarıyla tamamlandığında, aykırı değerimizde hareketli platform aktörünün seçili olduğundan emin olabilir ve

48
00:03:34,550 --> 00:03:40,730
‫ayrıntılar bölmesine bakarak gerçekten de My Float adında yeni bir özelliğe sahip olduğumuzu görebiliriz.

49
00:03:40,730 --> 00:03:47,510
‫Diğerleri çıkarılmış ve farklı X, Y ve Z konumlarındaki değerler tam da beklediğimiz

50
00:03:47,510 --> 00:03:49,700
‫gibi bir, iki ve üçtür.

51
00:03:50,090 --> 00:03:51,170
‫Yani bu harika.

52
00:03:51,170 --> 00:03:57,680
‫Peki ya bu değerleri ele geçirmek ve belki de başka bir mülke yapıştırmak istersem?

53
00:03:57,680 --> 00:04:04,250
‫Bu nedenle, herhangi bir yerde düzenle olarak işaretlenmiş başka bir özelliğim varsa, bunu denetçide

54
00:04:04,550 --> 00:04:13,160
‫görebilmemiz için float türünde x'im olarak adlandıracağız ve değiştirdiğimizi görebilmemiz için bunu sıfır olarak varsayacağız.

55
00:04:13,640 --> 00:04:20,750
‫Ve yapmak istediğim şey, begin play'deki my float'tan x değerini almak ve bunu my x değişkenine ayarlamak

56
00:04:20,750 --> 00:04:22,370
‫istiyorum.

57
00:04:22,460 --> 00:04:29,450
‫Şimdi C++ dosyasına gidelim ve begin play'de super big in play yazan satırdan sonra, x'imi vektörümden

58
00:04:30,020 --> 00:04:38,600
‫bir şey almak istediğimiz şeye eşit olarak ayarlayacağız, ancak vektörümün tamamını istemiyoruz.

59
00:04:38,600 --> 00:04:39,860
‫Bu bir hata olur.

60
00:04:39,860 --> 00:04:44,780
‫Bir vektörü float olarak ayarlayamayız, sadece o vektörün x kısmını istiyoruz.

61
00:04:44,930 --> 00:04:48,740
‫Bunu anlamak için operatör kavramını anlamamız gerekir.

62
00:04:48,770 --> 00:04:53,090
‫Operatörler, C++'da bir şey yapan sembollerdir.

63
00:04:53,090 --> 00:04:54,590
‫Zaten birkaç tane gördük.

64
00:04:54,590 --> 00:04:57,950
‫İki şeyi birbirine ekleyen artı operatörünü gördük.

65
00:04:57,950 --> 00:04:59,510
‫Ayrıca bir eksi operatörü de vardır.

66
00:04:59,510 --> 00:05:03,770
‫Atama yapan eşitlik operatörü, equals operatörü vardır.

67
00:05:03,980 --> 00:05:04,310
‫Şeyler.

68
00:05:04,310 --> 00:05:06,740
‫Bunu tam burada 19. satırda kullanıyoruz.

69
00:05:06,740 --> 00:05:12,020
‫Bu, vektörümün değerini X'ime atayan bir operatördür.

70
00:05:12,230 --> 00:05:18,850
‫Ve sonra bir operatörümüz daha var, ki bunun DOT operatörü olduğunu bilmemiz gerekiyor.

71
00:05:18,860 --> 00:05:23,360
‫Bir struct veya sınıf içinden bir şey alan bir operatördür.

72
00:05:23,360 --> 00:05:27,260
‫Bu yüzden X'i vektörümün içinden almak istiyoruz.

73
00:05:27,260 --> 00:05:34,040
‫Yani bir nokta operatörü kullanıyoruz, x'i noktalıyoruz, şimdi burada my vektörü ile x arasında bir boşluk kullanmıyoruz.

74
00:05:34,040 --> 00:05:40,460
‫Boşluk bırakmak bir hata olmasa da genellikle bu şekilde

75
00:05:40,460 --> 00:05:42,200
‫bırakırız.

76
00:05:42,200 --> 00:05:51,560
‫Yani x vektörüm var, vektörün x değerini almalı ve bunu x float'ıma koymalıyız.

77
00:05:51,560 --> 00:05:57,500
‫Bu yüzden satırın sonuna noktalı virgül koyuyoruz ve her zamanki gibi kırmızı dalgalı çizgileri görmezden geliyorum çünkü bazen

78
00:05:57,500 --> 00:06:00,530
‫güncellenmeleri uzun zaman alıyor ve bazen doğru olmuyorlar.

79
00:06:00,650 --> 00:06:06,860
‫Daha sonra canlı kodlamaya geçip yeniden derleme düğmesine basacağız ve başarılı bir sonuç alıp almadığımızı

80
00:06:06,860 --> 00:06:08,630
‫kontrol edeceğiz.

81
00:06:08,630 --> 00:06:11,120
‫Ve hayır, görüyorsunuz, bir yapı hatası var.

82
00:06:11,120 --> 00:06:16,100
‫Ve hataya bakarsanız, vektörümün bildirilmemiş bir tanımlayıcı olduğunu ve bunun yazım hatası yaptığım

83
00:06:16,100 --> 00:06:17,390
‫için olduğunu söylüyor.

84
00:06:17,390 --> 00:06:22,820
‫F vektörüne benim float'ım dedim ve muhtemelen ekranlarınızda çığlık atıyorsunuz, ancak size deneyimli

85
00:06:22,820 --> 00:06:26,180
‫programcıların bile hata yaptığını göstermek iyi oldu.

86
00:06:26,180 --> 00:06:30,890
‫Bunu benim vektörüm olarak adlandırmak istedik, bu yüzden başlık dosyasına geri döneceğim

87
00:06:30,890 --> 00:06:35,720
‫ve vektörüm olarak yeniden adlandıracağım, bu da beynimdeki sorunu ortadan kaldıracaktır.

88
00:06:35,720 --> 00:06:38,900
‫Devam edelim ve tekrar derle düğmesine tıklayalım.

89
00:06:38,900 --> 00:06:44,180
‫Bu da size hata yaptığınızda derleme hatası almanın nasıl bir şey olduğunu gösteriyor.

90
00:06:44,180 --> 00:06:45,280
‫Bu her zaman olur.

91
00:06:45,300 --> 00:06:48,290
‫Aslında, hata yapmamak çok nadir görülen bir durumdur.

92
00:06:48,290 --> 00:06:54,800
‫Bir şeyi ilk kez yaptığınızda, devam edip oynat düğmesine basacağız ve ayrıntılar bölmesinde hangi değeri elde

93
00:06:54,830 --> 00:06:56,300
‫ettiğimizi göreceğiz.

94
00:06:56,300 --> 00:07:05,060
‫Şimdi x değerimin bire ayarlandığını görebilirsiniz çünkü vektör değişkenimin x bileşenindeki değer

95
00:07:05,060 --> 00:07:05,990
‫buydu.

96
00:07:06,080 --> 00:07:09,800
‫Bu yüzden sizi bir vektör değeri belirlemeye davet ediyorum.

97
00:07:09,830 --> 00:07:11,930
‫Vektörden değerler alıyorduk.

98
00:07:11,930 --> 00:07:13,070
‫Şimdi bunları ayarlamayı deneyelim.

99
00:07:13,070 --> 00:07:17,240
‫Temel olarak bir değer ayarlamak için nokta operatörünü kullanmayı deneyin.

100
00:07:17,480 --> 00:07:25,850
‫Bu eşitliğin iki tarafını çevirmeyi deneyin, böylece benim X'im sağda ve benim vektörüm solda

101
00:07:25,850 --> 00:07:27,050
‫olsun.

102
00:07:27,050 --> 00:07:30,500
‫Peki ya bunu Y ya da Z olarak değiştirirseniz?

103
00:07:30,530 --> 00:07:32,090
‫Arada bir fark var mı?

104
00:07:32,120 --> 00:07:33,500
‫Videoyu duraklatın ve deneyin.

105
00:07:36,830 --> 00:07:37,430
‫Tamam.

106
00:07:37,430 --> 00:07:37,940
‫Tekrar hoş geldiniz.

107
00:07:37,940 --> 00:07:40,640
‫Bu yüzden bu ikisini değiştirmeyi deneyeceğim.

108
00:07:40,640 --> 00:07:49,010
‫C++'a geçelim ve Begin Play'de bunun yerine söyleyeceğim şey vektör nokta y'm x'ime eşittir ve sonra

109
00:07:49,010 --> 00:07:52,910
‫satırın sonuna noktalı virgül koyalım.

110
00:07:52,910 --> 00:07:57,770
‫Ve bir yapı içinde de değerleri bu şekilde ayarlayabiliriz.

111
00:07:57,770 --> 00:08:06,890
‫Şimdi Unreal'a geri dönelim ve yeniden derleyelim ve sonra devam edip X'imde bazı değerler ayarlayabiliriz.

112
00:08:06,890 --> 00:08:08,960
‫Bu yüzden buraya beş değerini koyacağım.

113
00:08:10,010 --> 00:08:15,650
‫Sonra devam edeceğim ve hareketli platformun ayrıntılar bölmesine bir göz atacağım.

114
00:08:15,650 --> 00:08:24,620
‫Ve tabii ki, vektörümün y değeri begin play'de x değerimdeki değerle güncellendi.

115
00:08:24,740 --> 00:08:26,060
‫Tebrik ederim.

116
00:08:26,060 --> 00:08:33,080
‫C++'da struct'lar gibi bileşik tipler olan daha karmaşık tiplerin nasıl kullanıldığını gördük.

117
00:08:33,080 --> 00:08:34,910
‫Bir sonraki derste görüşmek üzere.

