‫Merhaba ve hoş geldiniz.
‫Bu derste, C++'da fonksiyonlardan nasıl çıktı alabileceğimizi öğreneceğiz.
‫Ve bunu kodumuzu büyük ölçüde basitleştirmek ve yazdığımız sözde kodlardan bazılarını uygulamaya başlamak için kullanacağız.
‫Hadi içeri dalalım.
‫Bu nedenle, fonksiyonların geri dönüş değerlerini anlamaya çalışmadan önce, kısa bir sapma yapalım ve bunu anlayalım.
‫Buradaki iki kavram sözlüğümüze iki kavram daha ekliyor.
‫Yani ilki ifadedir ve ifade bir değer üreten bir kod parçasıdır.
‫Ve gerçekleştirilecek bir eylem olan bir kod parçası olan ifade vardır.
‫Şimdi bu ikisinin aslında bir ilişkisi vardır; bir ifade neredeyse her zaman bir kod parçasının değerini
‫hesaplamak için gerçekleştirilecek bir eylem olması gereken bir ifadedir.
‫Ancak aynı şey tam tersi için de geçerli değildir.
‫Bir beyan size her zaman bir değer vermeyecektir.
‫Şimdi bazı ifade örneklerine ve daha önce yazdığımız koddan olmayan bazı şeylere
‫bir göz atalım.
‫Dolayısıyla, my vector'ü C++'a yazdığımızda, bu bir ifadedir çünkü my vector değişkeninin içinde depolanan her şeyin
‫değerine sahiptir.
‫Aynı durum yerel vektör için de geçerlidir.
‫Ve aslında yerel vektör artı z'ye sahipseniz, bunun kendisi bir ifadedir ve yerel vektör nokta z artı
‫100'dür.
‫Bu da bir ifadedir, çünkü yerel z vektörü size Z üyesinin içindeki değeri verir.
‫Ve 100 eklediğinizde, bu size 100 eklenmiş yeni bir değer verir.
‫Yani bunların hepsi birer ifadedir.
‫Ancak, ifade olmayan bir şey, yerel vektörümüzü bildirdiğimizde ve F vektörü, yerel vektör eşittir benim vektörüm dediğimizde
‫ve satırın sonuna noktalı virgül koyduğumuzda ortaya çıkar.
‫Bunu bir değer elde etmek için kullanamayız.
‫Orada bir değer yok.
‫Sadece C++'ya burada gerçekleştirmeniz gereken bir eylem olduğunu söylüyor.
‫Yeni bir yerel vektör oluşturmanızı istiyorum.
‫Yani bu bir ifade değildir.
‫Ancak, ifade olan bir şey aktör konumu almaktır.
‫Bu çağırdığımız bir fonksiyon çünkü sonunda parantezler var.
‫Aslında burada herhangi bir tartışmamız yok.
‫Bu boş bir argüman listesidir, ancak bir şey çağırmaktadır.
‫Ve bu fonksiyonun bir geri dönüş değeri olduğundan, buradaki asıl kod parçası, fonksiyondan döndürülen
‫değeri alan bir ifadedir.
‫Ve bu aslında daha önce Blueprint'te gördüğümüz çıkış pinleriyle aynıdır.
‫Blueprint'ten farklı olarak, bir fonksiyondan yalnızca bir çıktı değerine sahip olabilirsiniz.
‫Sadece bir dönüş değeri vardır.
‫İşte bu, mevcut konumu al diyen sözde kodumuzu yazdığımız yerde kullanabileceğimiz şeydir.
‫Bunu yapacağımız yer burası.
‫Get aktif konumumuzu kullanarak konumu alacağız.
‫Şimdi burada yeni bir yerel değişken oluşturalım.
‫F vektör tipinde F adında yeni bir yerel değişkenimiz olacak.
‫F tipi bir vektör olmak zorundadır çünkü get active konumundan döndürülen tip budur.
‫Ve bu geçerli konumu çağıracağız ve bunu sonuca veya get actor location ifadesine eşit olarak ayarlayacağız ve ardından
‫bir dizi eşleşen parantez ve ardından satırı sonlandırmak için bir noktalı virgül koyacağız.
‫Bu satırı biraz incelersek, buradaki get actor location ve parantezlerin bize
‫aktörün mevcut konumu olan değeri veren ifade olduğunu görebiliriz.
‫Ardından, burada da bildirilen mevcut konuma bir atama yapıyoruz.
‫Yani bu satırda, bu satırın tamamı bir ifade değildir.
‫Bunun bir değeri yok, bu bir açıklama.
‫Ve genellikle bir ifadeyi anlayabilirsiniz çünkü C++'da noktalı virgülle biter.
‫Tamam, bu aslında daha önce kullandığımız benim vektörüm ve yerel vektörleri ortadan
‫kaldırmamıza izin verecek çünkü burada sadece yerel değişkenimizi, aktörümüzün
‫konumundan aldığımız bu mevcut konumu güncelleyebilmeliyiz.
‫Yapacağımız şey, burada daha aşağıda, konumu ayarla yazan bir yorumumuz var.
‫Bu yorum satırından sonra, sadece bu değişken değerini kullanan mevcut konum ifadesini kullanarak bir aktör konumu ayarlayacağım ve ardından tüm bu
‫şeyin bir ifade olduğunu söylemek için satırın sonuna noktalı virgül
‫koyacağım.
‫Bu eylem setini bir konumda çalıştırmasını istiyoruz ve yorumlarım girintili olsa da, kodu eşleşecek şekilde
‫girintilememeye karar verdim çünkü genellikle istediğimiz budur.
‫Kodlar, fonksiyon içinde bir girinti seviyesinde olmalıdır.
‫Şimdi yapabileceğim şey, daha önce sahip olduğumuz tüm kodu, yerel vektörü içeren her şeyi kaldırabilirim.
‫Vektörüm yerel vektörü kullanarak bir konum belirledi.
‫Tüm bunları kaldırabilirim, böylece elimizde sadece yorumlarımızın etrafındaki şeyler kalır.
‫Ayrıca başlık dosyasına gidip burayı biraz temizleyeceğim.
‫Artık my vektörüne ihtiyacımız yok, artık my x new özelliklerine ihtiyacımız yok.
‫Bu yüzden bunları da sileceğim.
‫Şimdi açıkçası hareketli platform CP'si aslında pek bir şey yapmıyor çünkü mevcut aktif konumu
‫alıyoruz, sonra tekrar ayarlıyoruz, bu da temelde hiçbir etkiye sahip değil.
‫Bu nedenle, bu tik fonksiyonunda hareketli platformun mevcut konumunu güncellemeyi denemenizi istiyorum.
‫Bu yüzden X veya Y üyelerini uygun gördüğünüz şekilde kullanın.
‫Bir X sizi ileri taşıyacak, Y sizi sağa taşıyacak, daha sonra buna ekleme yapabilir ve hareketli platformlarımızın konumunu
‫güncellemek için daha önce yaptığımız gibi üyeye geri atayabilirsiniz.
‫Bu yüzden platformun ne kadar hızlı hareket etmesini istediğinize bağlı olarak bir veya iki tane ekleyin ve ardından platformu
‫başlangıç konumuna taşıyın çünkü artık başlangıç konumunu söylemek için üye değişkenimiz
‫yok, aslında mevcut konumu kullanıyoruz.
‫Bu yüzden platformu nereye yerleştirirseniz, platform oradan başlayacaktır.
‫Daha sonra kodunuzu derleyip test etmenizi ve beklediğiniz gibi hareket edip etmediğini görmenizi istiyorum.
‫Videoyu duraklatın ve deneyin.
‫Tamam.
‫Tekrar hoş geldiniz.
‫Bu kod satırını, bundan bahseden yorumun hemen altına yerleştireceğiz, o konuma
‫vektör ekleyeceğiz.
‫Bunu buraya koymamızın nedeni de sıralama.
‫Mevcut konumu almak, güncellemek ve ardından ayarlamak istiyoruz.
‫Orada sıra dışı bir şey olmasını istemiyoruz.
‫Değişkeni oluşturmadan önce onu güncellemiş olsaydık, o değişken var olmazdı.
‫Unutmayın, bu yerel bir değişkendir.
‫Yalnızca işlevin bu özel çağrısı içinde oluşturduğumuzda var olur.
‫Ve eğer bunu aktör konumunu tekrar ayarladıktan sonra yapsaydık, bu değişiklik işlevdeki
‫kapanış parantezine geldiğimizde atılacaktı.
‫Bu yüzden mevcut konumu nokta x olarak ayarlayacağız, mevcut konuma eşit, nokta x artı bir kullanacağım ve
‫ardından satırın sonuna noktalı virgül koyacağım.
‫Unreal'a geri döneceğiz ve derleme düğmesine basacağız.
‫Ve bahsettiğim gibi, şimdi gidip bu hareketli platformu başlangıç konumuna taşımamız gerekiyor.
‫Üçüncü şahıs karakterimize tıklayacağım ve konumuna sağ tıklayıp kopyala düğmesine basarak konumunu kopyalayacağım,
‫ardından hareketli platformumuza gidip konumuna sağ tıklayıp yapıştır düğmesine basacağım.
‫Bu da platformu doğrudan oynatıcımızın içine yerleştirir ki bu aslında istediğimiz şey değildir.
‫Bu yüzden oyuncunun biraz sağına doğru hareket ettireceğim ve doğru yükseklikte olup olmadığını görebileceğim.
‫Sanırım bunu biraz daha aşağıda yapacağım, konum değişkeni yerine mevcut konumu kullanmanın faydalarından
‫biri de bu platformun dünyanın neresinde olacağını gerçekten görebilmemdir.
‫Şimdi devam edip oynat düğmesine basarsam, platformun X yönünde güzel bir şekilde ilerlediğini ve hala üzerine
‫atlayıp onunla birlikte hareket edebildiğimi görebilirsiniz.
‫Harika bir şey.
‫Artık geri dönüş değerlerinin fonksiyonlar dışında nasıl çalıştığını öğrendik.
‫C++ dünyasındaki planlardan birçok kavramı gerçekten anlamaya başlıyoruz.
‫Bir sonraki derste görüşürüz.