mrtcnaslnts

Aktif üye
8 Ara 2019
577
2
43
28
Bir sistem hazırladım ve bu sistemde içerisinde 10 tane değişken olan bir Structure var. Sistemim çalışıyor bir skntım yok ancak 3 5 gün sonra bu Structure içerisindeki değişkenlerde düzenleme ya da değişiklik yaptığımda paketlemelerde "Unknown structure" şeklinde hataları almaya başlıyorum. Yani bir structure oluşturduğumuzda ilerde bunu bir daha değiştiremeyecek miyim ben. Bu nasıl bir olay anlamadım.
 
Bir sistem hazırladım ve bu sistemde içerisinde 10 tane değişken olan bir Structure var. Sistemim çalışıyor bir skntım yok ancak 3 5 gün sonra bu Structure içerisindeki değişkenlerde düzenleme ya da değişiklik yaptığımda paketlemelerde "Unknown structure" şeklinde hataları almaya başlıyorum. Yani bir structure oluşturduğumuzda ilerde bunu bir daha değiştiremeyecek miyim ben. Bu nasıl bir olay anlamadım.
Sağ tıkla Refresh node de
 
  • Beğen
Tepkiler: mrtcnaslnts
Tamam buldum. Ama sen şimdi diyorsun ki. O structure nod olarak kaç tane yerde varsa hepsine tek tek girip refresh yap. bu de en az 20 30 BP içini açıp yapmak demek. tek seferde yapamıyoruz galiba
 
Eğer structure cpp tarafında ise build ettiğinde auto olarak tüm aktörlere işlenir ancak BP ile oluşturulan structure larda herhangi bir build işlemi yapılmadığından tanımlı aktörler değişikliği algılayamaz çünkü structure dediğimiz sistemde standart tanımlı olmayan tamamen unique bir yapıdır, dolayısıyla find all references ile kullandığın tüm aktörleri bulup tek tek compile-save yapmazsan hata alırsın.
 
Tamam buldum. Ama sen şimdi diyorsun ki. O structure nod olarak kaç tane yerde varsa hepsine tek tek girip refresh yap. bu de en az 20 30 BP içini açıp yapmak demek. tek seferde yapamıyoruz galiba
Benim de başıma geldi maalesef bir yolu yok gibi tek tek uğraşıyorsun. Struct işine hiç girmiyorum ya da az giriyorum. Çoğu şeyi TAG ile çözüyorum ben. Unique bir yapı oluşturuyor bana. Ama bu her şeyde olacak diye bir şey de yok.
Projen küçükse ve basitse yapacağın işlemler anlıksa ileride tekrardan tetiklenmeyecekse geniş sistemle yapıp vakit kaybetme. Salaş kod yaz. İşini görecek şeyler kullan.
Fakat sürekli kullanacağın bir şeyler var ise modüler bir sistem kurman gerekiyordur yoksa ileride eline koluna dolanır.

Mesela ben başta avel gibi gidip her şeye boolean atadım. İşte silah kullanırken şu animasyonu yap el fenerini devre dışı bırak pusulayı devre dışı bırak gibi. Sonra aynılarını diğerleri için de yaptım. Şimdi ne oldu ? Eşyalar çoğalınca elime koluma dolandı her şey.

Fakat oyunumun bir bölümünde tarot kartlarının bir yere yerleştirilmesi lazımdı. İç içe enumlar yapılması lazımdı ya da struct yapılması lazımdı ben ikisini de yapmadım. Sahnede toplanılacak her karta bir TAG girdim. Mesela ölümkarti, güneşkarti. Gibi

Tag ileterek kart tipini belirlemiş oldum ve resimlerini falan çektim buna göre.
Amele yöntemi hızlıdır.
 
Eğer structure cpp tarafında ise build ettiğinde auto olarak tüm aktörlere işlenir ancak BP ile oluşturulan structure larda herhangi bir build işlemi yapılmadığından tanımlı aktörler değişikliği algılayamaz çünkü structure dediğimiz sistemde standart tanımlı olmayan tamamen unique bir yapıdır, dolayısıyla find all references ile kullandığın tüm aktörleri bulup tek tek compile-save yapmazsan hata alırsın.
Evet Abim. Öyle yaptım Uğraştırdı biraz. cpp değil.

Benim de başıma geldi maalesef bir yolu yok gibi tek tek uğraşıyorsun. Struct işine hiç girmiyorum ya da az giriyorum. Çoğu şeyi TAG ile çözüyorum ben. Unique bir yapı oluşturuyor bana. Ama bu her şeyde olacak diye bir şey de yok.
Projen küçükse ve basitse yapacağın işlemler anlıksa ileride tekrardan tetiklenmeyecekse geniş sistemle yapıp vakit kaybetme. Salaş kod yaz. İşini görecek şeyler kullan.
Fakat sürekli kullanacağın bir şeyler var ise modüler bir sistem kurman gerekiyordur yoksa ileride eline koluna dolanır.

Mesela ben başta avel gibi gidip her şeye boolean atadım. İşte silah kullanırken şu animasyonu yap el fenerini devre dışı bırak pusulayı devre dışı bırak gibi. Sonra aynılarını diğerleri için de yaptım. Şimdi ne oldu ? Eşyalar çoğalınca elime koluma dolandı her şey.

Fakat oyunumun bir bölümünde tarot kartlarının bir yere yerleştirilmesi lazımdı. İç içe enumlar yapılması lazımdı ya da struct yapılması lazımdı ben ikisini de yapmadım. Sahnede toplanılacak her karta bir TAG girdim. Mesela ölümkarti, güneşkarti. Gibi

Tag ileterek kart tipini belirlemiş oldum ve resimlerini falan çektim buna göre.
Amele yöntemi hızlıdır.
ya o zaman da değişken çöplüğüne dönüyor ortalık. envanter sistemi olduğu için structure şart
 
Structure'lar her zaman sorun oldu ya, özellikle bir değişiklik yaptığın zaman çok fena sapıtabiliyor maalesef, bende hala sorun yaşamaktayım düzenli olarak :) Sorunu aşmak için CPP biraz daha rahat gibi - en azından daha az sorun yaratıyor.

Stabil olarak CPP tarafında kullandığım örnek bir struct paylaşayım belki işine yarar.


C++:
// SaveGameData.h
#pragma once

#include "CoreMinimal.h"
#include "GameFramework/SaveGame.h"
#include "SaveGameData.generated.h"

USTRUCT(BlueprintType)
struct FSaveDataSnapshot
{
    GENERATED_BODY()

    UPROPERTY(BlueprintReadOnly, Category = "SaveGameData")
    TArray<FString> UnlockedLevels;

    UPROPERTY(BlueprintReadOnly, Category = "SaveGameData")
    int32 StrikeCount = 0;

    UPROPERTY(BlueprintReadOnly, Category = "SaveGameData")
    bool bMobileAdsActive = true;
};


Özellikle BlueprintType kısmını girmek önemli, aksi takdirde her projeyi açtığımda struct uçmuş oluyordu, Livecoding ile birlikte iyice sapıtıyordu yeni instance oluşturup.
SaveGameManager ile rahatça kullanabilirsin envanter için bu yapıyı.
 
  • Beğen
Tepkiler: mrtcnaslnts
Ben tuş ataması yaptım. İlgili BP içerisine girip seri sekilde F5 yapıp çıkıyorum. Sonra da Save All ve mesele çölülüyor :)
 

Ekli dosyalar

  • IMG_20250822_101517_126.jpg
    IMG_20250822_101517_126.jpg
    100.8 KB · Görüntüleme: 5
  • Beğen
Tepkiler: mrtcnaslnts