Unity sahne yönetimi, veri transferini kolaylaştıran Serializable ve DontDestroyOnLoad yöntemleri ile bir adım öne çıkıyor Bu yöntemler, oyun geliştirme sürecinde önemli bir rol oynuyor Gelin, bu yöntemleri öğrenin ve projelerinize uygulayın
Unity, oyun geliştiricileri tarafından sıklıkla tercih edilen bir araçtır. Hazırlanan oyunlarda sahne yönetimi yapılırken, veri aktarımı da oldukça önemli bir faktördür. Bu noktada Serializable ve DontDestroyOnLoad yöntemleri devreye girer. Bu yöntemler sayesinde, bir objenin tüm verileri korunarak farklı sahnelere rahatlıkla aktarılabilir.
Serializable, bir objenin binary formatta dönüştürülerek başka bir sahneye aktarılmasını sağlayan bir özelliktir. Binary format, bilgisayarların anlayabileceği bir dildir. Bu sayede veri kaybı yaşanmadan, objenin tüm özellikleri korunur. DontDestroyOnLoad yöntemi ise, bir objenin herhangi bir sahneye geçiş yapıldığında yok olmamasını sağlar. Böylece, o obje farklı sahnelere rahatlıkla taşınabilir.
Unity'nin bu özellikleri sayesinde, oyun geliştiricileri objeleri aktif olarak taşıyabilirler. Serializable yöntemi kullanılarak bir objenin tüm özellikleri binary formatta korunabilir ve farklı sahnelere taşınabilir. Aynı şekilde, DontDestroyOnLoad yöntemi de kullanılarak bir objenin alt objeleriyle birlikte tüm sahnelere taşınması sağlanabilir.
Unity sahne yönetimi için Serializable ve DontDestroyOnLoad yöntemlerinin kullanımı oldukça kolaydır. Bu yöntemler sayesinde oyun geliştiricileri objeleri farklı sahnelere rahatlıkla taşıyabilir ve veri kayıplarının önüne geçebilirler. Bu sayede oyunlar daha akıcı ve kullanıcı dostu hale gelir.
Serializable Nedir?
Serializable Nedir?
Unity kullanarak sahne yönetimi yaparken, veri aktarımı için Serializable yöntemini kullanabilirsiniz. Serializable, bir sınıfın nesnesinin binary formata dönüştürülmesini ve başka bir sınıfta yeniden oluşturulmasını sağlayan bir özelliktir. Bu yöntem sayesinde bir nesnenin özellikleri korunur ve veri kaybı yaşanmaz.
Bir sınıfı Serializable hale getirmek için, Serializable arayüzünü implemente etmeniz yeterlidir. Ayrıca, serileştirilebilen sınıfın özellikleri public olarak tanımlanmalıdır. Böylece, diğer sınıflar tarafından erişilebilir hale gelir.
Aşağıdaki örnek, Serializable kullanarak bir sınıfın binary formata dönüştürülmesini göstermektedir:
public class SerializableObject : MonoBehaviour, Serializable |
{ |
public float health; |
public string name; |
} |
Bir sınıfın nesnesini binary formata dönüştürmek için ise, BinaryFormatter sınıfını kullanarak MemoryStream nesnesine serialize etmeniz gerekmektedir:
SerializableObject currentObject = new SerializableObject(); |
BinaryFormatter formatter = new BinaryFormatter(); |
MemoryStream stream = new MemoryStream(); |
formatter.Serialize(stream, currentObject); |
Yukarıdaki örnek, bir nesnenin binary formata dönüştürülmesini göstermektedir. Bu sayede, nesnenin özellikleri binary formatta saklanır ve başka bir sınıfa aktarılabilir.
DontDestroyOnLoad Nedir?
Unity sahne yönetimi yaparken, sık sık farklı sahnelere geçmek gerekebilir. Bu durumda, bir objenin bir sahne değiştiğinde yok olmasını istemeyebiliriz. İşte bu noktada, DontDestroyOnLoad yöntemi devreye girer.
Bir objeye DontDestroyOnLoad yöntemi eklediğinizde, bu obje oyun sahnesi değiştirildiğinde yok olmayacak şekilde programlanır. Bu sayede, sahne değişikliği sonrasında o objeye tekrar erişebiliriz.
Bir başka deyişle, DontDestroyOnLoad yöntemiyle bir objeyi yeni sahneye taşımış oluruz.
Bu yöntem, genellikle oyunun özellikleri ve tanımları gibi sabit kalan nesnelerde kullanılır. Örneğin, kullanıcı adı ve şifre gibi verileri tutan bir arayüz objesi, her sahneye geçildiğinde yok olmamalıdır. Bu objenin yok olmamasını sağlamak için DontDestroyOnLoad yöntemi kullanılır.
Serializable Kullanımı
Unity kullanarak sahne yönetimi yaparken, veri aktarımı için Serializable ve DontDestroyOnLoad yöntemleri oldukça kullanışlıdır. Serializable, bir sınıfın nesnesinin binary formata dönüştürülmesini ve başka bir sınıfta yeniden oluşturulmasını sağlayan bir özelliktir. Serializable kullanarak bir nesneyi binary formatta dönüştürüp başka bir sahneye geçirdiğinizde, nesnenin özellikleri korunur ve veri kaybı yaşanmaz.
Bir örnek vermek gerekirse, bir nesnenin özelliklerinin kopyalanması gerektiğinde Serializable kullanılabilir. Serializable özelliği eklenmiş bir sınıfta, nesneye ait tüm özellikler kaydedilebilir ve binary formatta başka bir sahneye geçirildiğinde tüm özellikler tam olarak korunabilir. Aşağıdaki örnekte, Serializable kullanarak bir nesneyi binary formatta dönüştürmek gösterilmiştir:
Kod: | SerializableObject currentObject = new SerializableObject(); BinaryFormatter formatter = new BinaryFormatter(); MemoryStream stream = new MemoryStream(); formatter.Serialize(stream, currentObject); |
---|---|
Açıklama: | Yeni bir SerializableObject örneği oluşturur, bir BinaryFormatter oluşturur ve bir MemoryStream oluşturur. Ardından, Serialize yöntemi kullanılarak, nesne binary formatta MemoryStream'e yazılır. |
Serializable yöntemi, veri taşıma ve depolama işlemlerinde oldukça işlevsel bir yöntemdir. Unity ile sahne yönetimi yaparken, Serializable ve DontDestroyOnLoad yöntemlerini birlikte kullanarak nesnenin tüm özelliklerini binary formatta koruyabilir ve farklı sahnelere taşıyabilirsiniz.
Serializable Örneği
Eğer bir objenin özelliklerini binary formatta korumak ve başka bir sahneye aktarmak istiyorsanız, Serializable yöntemini kullanabilirsiniz. Serializable kullanarak bir sınıfın nesnesinin binary formata dönüştürülmesini ve başka bir sınıfta yeniden oluşturulmasını sağlayabilirsiniz. Serializable örneği şu şekildedir:
Kod Parçası | Açıklama |
---|---|
public class SerializableObject : MonoBehaviour, Serializable { public float health; public string name;} | Serializable özelliğini taşıyan bir sınıf oluşturulur ve içerisinde health ve name özellikleri tanımlanır. |
BinaryFormatter formatter = new BinaryFormatter();MemoryStream stream = new MemoryStream();formatter.Serialize(stream, currentObject); | Sınıfın bir nesnesi oluşturulur ve binary formata dönüştürülür. |
Bu şekilde binary formata dönüştürülmüş objeyi, başka bir sahneye geçirdiğinizde objenin özellikleri korunur ve veri kaybı yaşanmaz.
{Unity Sahne Yönetimi: Veri Transferi İçin Serializable Ve DontDestroyOnLoad Yöntemleri
Unity oyun motoru, sahne yönetimi esnasında veri transferi için Serializable ve DontDestroyOnLoad yöntemlerini kullanarak hayatımızı kolaylaştırır. Serializable özelliği, bir sınıfın nesnesini binary formata dönüştürüp başka bir sınıfta yeniden oluşturmamızı sağlar. Böylece nesnenin özellikleri korunur ve veri kaybı önlenir.
DontDestroyOnLoad ise, oyun sahnesi değiştirildiğinde bir nesnenin yok olmasını önleyen bir yöntemdir. Bu da o nesnenin özelliklerinin diğer sahnelere taşınabilmesi anlamına gelir. Böylece, oyunun farklı sahnelerinde kullanmak istediğimiz özelliklere sahip olan bir nesneyi korurken, aynı zamanda tüm sahnelerde kullanabiliriz.
Serializable özelliği kullanarak bir nesneyi binary formatta dönüştürüp başka bir sahneye geçirdiğinizde, DontDestroyOnLoad yöntemini de kullanarak o nesnenin yok olmamasını sağlayabilirsiniz. Bu sayede, nesnenin özelliklerinde kayıp yaşanmaz ve istediğiniz sahnede aynı nesneyi kullanabilirsiniz.
Örnek olarak, SerializableObject sınıfında kullanılacak özellikleri float health ve string name şeklinde tanımlayabilirsiniz. Bu sınıfı public class'ı ile birlikte yazarak, Serializable özelliğini kullanmış olursunuz. Binary forma dönüştürmek için ise BinaryFormatter kullanabilir ve MemoryStream ile atamalar yapabilirsiniz.
DontDestroyOnLoad yöntemini kullanmak için ise, bir obje üzerinde DontDestroyOnLoad(this.gameObject) fonksiyonunu çağırmak yeterlidir. Bu sayede, o objenin sahne değişikliği durumunda silinmesi engellenir ve sahneler arası özellikler taşınabilir.
Serializable ve DontDestroyOnLoad yöntemleri birlikte kullanılarak, bir objenin tüm özelliklerini binary formatta koruyabilir ve farklı sahnelere taşıyabilirsiniz. Bu sayede, oyunun farklı sahnelerinde kullanmak istediğiniz özelliklere sahip olan bir nesneyi koruyabilir ve aynı zamanda tüm sahnelerde kullanabilirsiniz.
public float health;public float health, bir SerializableObject sınıfının özelliğidir. Bu özellik, nesnenin sağlık puanını ifade eder ve float türünde bir değere sahiptir. Bu özellik üzerinde değişiklik yapılabilir ve Serialize edildiğinde diğer sahnelere taşınabilir. Ayrıca, bu özellik bir table veya list gibi veri yapılarıyla da kullanılabilir.
public string name;'public string name;' ifadesi, bir Serializable sınıfın bir özellik tanımını ifade eder. Bu özellik, o nesnenin ismini tutar ve başka sahneye taşındığında da isim değişmeden korunmasını sağlar.
}Unity Sahne Yönetimi, oyun geliştiricilerinin oyun sahnelerini etkili bir şekilde yönetmelerine olanak tanıyan bir araçtır. Veri aktarımı sırasında Serializable ve DontDestroyOnLoad yöntemleri kullanılarak verilerin kaybolmadan farklı sahnelere taşınması mümkündür. Serializable, bir objenin binary formata dönüştürülmesini ve başka bir sınıfta yeniden oluşturulmasını sağlayan bir özelliktir. DontDestroyOnLoad yöntemi ise, bir objenin oyun sahneleri arasında geçiş yaparken yok olmamasını sağlayarak, verilerin kaybolmasını önler.
Serializable özellikleri sayesinde, bir objenin tüm özellikleri binary formatta korunarak, farklı sahnelere aktarılabilir. Bu sayede, oyun içindeki farklı sahnelerde aynı objeyi tekrar tekrar yaratmak yerine, seri hale getirilip taşınabilir ve zamandan tasarruf sağlanabilir. Aynı şekilde, DontDestroyOnLoad yöntemi kullanılarak bir obje, oyun sahneleri arasında kolaylıkla taşınabilir. DontDestroyOnLoad yöntemi kullanılmadığında, bir obje oyun sahnesinden çıkarken yok olur ve diğer sahnelerde tekrar yaratılması gerekebilir.
Serializable ve DontDestroyOnLoad yöntemleri bir arada kullanıldığında, bir objenin bir sahnedeki tüm özellikleri binary formatta korunarak, farklı sahnelere taşınabilir. Bu sayede, oyun içindeki farklı sahnelerdeki veri aktarımı kolaylaşır ve veri kaybı yaşanmaz. Bu yöntemlerin kullanımı, oyun geliştiricilerine, veri aktarımı sırasında zaman kazandırırken, aynı zamanda verilerin kaybolup kaybolmaması konusundaki endişelerini ortadan kaldırır.
Sonuç olarak, Unity Sahne Yönetimi kullanarak farklı sahneler arasında veri aktarımı yapmak oldukça kolaydır. Serializable ve DontDestroyOnLoad yöntemleri kullanılarak objelerin binary formatta taşınması sayesinde, veri kaybı yaşanmadan farklı sahneler arasında geçiş yapmak mümkündür. Bu sayede, oyun geliştiricileri zamanlarını daha verimli kullanabilir ve oyunlarında daha fazla detay ekleyebilirler.
Binary Formatta Dönüştürme
=SerializableObject, bir sınıfın özelliklerini koruyarak binary formatta taşımaya olanak sağlar. Binary formatta dönüştürme işlemi için öncelikle bir nesne oluşturulur ve BinaryFormatter sınıfı kullanılır. Daha sonra MemoryStream sınıfıyla binary formatta dönüştürülerek başka bir sahneye aktarılabilir.SerializableObject Sınıfı Özellikleri | |
---|---|
health | Nesnenin sağlık puanı |
name | Nesnenin ismi |
Örneğimize geri dönecek olursak, SerializableObject sınıfı kullanılarak bir nesne oluşturulur ve currentObject adında bir değişkene atanır. Daha sonra bu nesne, BinaryFormatter sınıfı kullanılarak MemoryStream sınıfına binary formatta dönüştürülür ve veri kaybı olmadan başka bir sahneye taşınabilir.
- Öncelikle SerializableObject sınıfı kullanılarak bir nesne oluşturulur: SerializableObject currentObject = new SerializableObject();
- Daha sonra BinaryFormatter sınıfı kullanılarak MemoryStream sınıfına binary formatta dönüştürülür: BinaryFormatter formatter = new BinaryFormatter(); MemoryStream stream = new MemoryStream(); formatter.Serialize(stream, currentObject);
- Artık oluşturulan binary dosya, başka bir sahneye aktarılabilir ve nesnenin özellikleri kaybolmaz.
BinaryFormatter, serializable nesneleri binary formata dönüştürmek için kullanılan bir sınıftır. Serializable bir nesneyi binary formata dönüştürmek için, önce bir BinaryFormatter nesnesi oluşturmanız gerekir. Daha sonra, dönüştürmek istediğiniz nesneyi MemoryStream sınıfının örneği olarak oluşturduğunuz bir stream nesnesine yazmalısınız. BinaryFormatter'ın Serialize() özelliği çağırılarak, stream nesnesi binary formatta dönüştürülebilir.
Aşağıdaki örnekte, bir SerializableObject nesnesi binary formata dönüştürülüyor:
Kod | Açıklama |
---|---|
SerializableObject currentObject = new SerializableObject(); | SerializableObject nesnesi oluşturuluyor |
BinaryFormatter formatter = new BinaryFormatter(); | BinaryFormatter nesnesi oluşturuluyor |
MemoryStream stream = new MemoryStream(); | MemoryStream sınıfının örneği olarak stream nesnesi oluşturuluyor |
formatter.Serialize(stream, currentObject); | Serialize() özelliği çağırılarak nesne binary formata dönüştürülüyor |
Unity kullanarak sahne yönetimi yaparken, veri aktarımı için birçok yöntem vardır. Bu yöntemler arasında Serializable ve DontDestroyOnLoad özellikleri oldukça önemlidir. Serializable özelliği sayesinde, bir nesnenin binary formatta dönüştürülmesini ve başka bir sınıfta yeniden oluşturulmasını sağlayabilirsiniz. Bu sayede nesnenin özellikleri korunur ve veri kaybı yaşanmaz.
Binary formatta dönüştürme işlemi içinse MemoryStream sınıfı kullanılır. MemoryStream, binary verileri depolamanıza olanak sağlar. Bu özellik sayesinde, Serializable nesnelerin binary formatta kaydedilmesi ve geçiş yapması sağlanabilir. MemoryStream kullanımı oldukça kolaydır. İlk olarak bir MemoryStream sınıfı oluşturulur ve nesne bu bellek akışına yazdırılır. Ardından, BinaryFormatter sınıfı kullanılarak nesne binary formatta dönüştürülür. Kod örneği aşağıdaki gibidir:
Örnek Kod: |
---|
SerializableObject currentObject = new SerializableObject(); BinaryFormatter formatter = new BinaryFormatter(); MemoryStream stream = new MemoryStream(); formatter.Serialize(stream, currentObject); |
DontDestroyOnLoad yöntemiyle, bir objenin yok olmasını önleyebilirsiniz. Bu sayede objeyi diğer sahnelere de taşıyabilirsiniz. Objeyi taşırken, Serializable kullanarak binary formatta dönüştürebilir ve objenin tüm özelliklerini koruyabilirsiniz.
DontDestroyOnLoad kullanımı oldukça basittir. Önce objenizi seçip yöntemi Activate edin. Bu yöntem sayesinde objeniz, sahne değiştirildiğinde bile yok olmayacaktır. Kod örneği aşağıdaki gibidir:
Örnek Kod: |
---|
public class DontDestroyObject : MonoBehaviour { void Awake() { DontDestroyOnLoad(this.gameObject); } } |
Sonuç olarak, Serializable ve DontDestroyOnLoad yöntemleri birlikte kullanılarak, bir objenin tüm özelliklerini binary formatta kaydedebilir ve farklı sahnelere taşıyabilirsiniz. Bu özelliklerin kullanımı, Unity oyun geliştirme sürecinde oldukça önemlidir.
formatter.Serialize(stream, currentObject);'formatter.Serialize(stream, currentObject);' kodu, bir Serializable nesnesini binary formata dönüştürmek için kullanılır. Bu işlem, bir objenin özelliklerini koruyarak başka bir sahneye geçirilmesini sağlar. BinaryFormatter sınıfı, nesnelerin binary formata dönüştürülmesini sağlayan bir sınıftır. Ayrıca MemoryStream sınıfı ise binary verileri bellekte depolamak için kullanılır.
Yukarıdaki örnekte, SerializableObject sınıfından bir nesne oluşturulur ve bu nesne BinaryFormatter sınıfı ile binary formata dönüştürülür. Nesne MemoryStream sınıfı ile bellekte depolanır ve nesne başka bir sahneye geçirildiğinde bu binary verileri tekrar okunabilir hale getirilir. Bu sayede, nesnenin özellikleri korunur ve veri kaybı yaşanmaz.
Bu yöntem, Unity oyun motoru ile özellikle oyunlarda sıklıkla kullanılan bir yöntemdir. Özellikle, oyun içindeki karakterlerin özelliklerinin bir sahneden diğerine geçirilmesi veya oyun içindeki gelişmelerin kaydedilmesi için kullanılır.
DontDestroyOnLoad Kullanımı
Unity oyun motoru sahne yönetimi yaparken, veri aktarımı için Serializable ve DontDestroyOnLoad yöntemlerini kullanabilirsiniz. DontDestroyOnLoad yöntemi, bir objenin yok olmasını önleyerek, bu objeye ait özelliklerin ve değerlerin bir sonraki sahneye de taşınmasını sağlar. Bu sayede, bir oyun objesinin tüm özellikleri diğer sahnelere de taşınabilir.
DontDestroyOnLoad() yöntemi, objenin yok olmasını engeller ve sahneler arasında geçiş yaparken objenin yok olmasını da önler. Bu yöntem, özellikle bir menü sahnesinde kullanışlıdır. Örneğin, bir ana menü objesi dontdestroyonload kullanılarak oluşturulur ve böylece oyun sahnesine geçildiğinde bu obje yok olmaz ve oyuncu menüye geri döndüğünde aynı menü objesi tekrar kullanılabilir.
Bir DontDestroyOnLoad objesi oluşturmak için, objenin içinde bulunduğu script dosyasında Awake() yöntemi kullanılır. Bu yöntem sayesinde, obje sahneye geçirilirken sıkıntılar yaşamaz ve bir sonraki sahnede de kullanılabilir.
DontDestroyOnLoad Kullanımı |
public class DontDestroyObject : MonoBehaviour { void Awake() { DontDestroyOnLoad(this.gameObject); } } |
Yukarıdaki örnekte, DontDestroyObject adında bir MonoBehaviour script dosyası kullanıldı. Bu script dosyasında, Awake() yöntemi kullanılarak DontDestroyOnLoad() yapıldı. Bu sayede, obje sahne arasında geçiş yaptığında yok olmaz ve diğer sahnelere de taşınır.
DontDestroyOnLoad Örneği
DontDestroyOnLoad yöntemi oyun sahnesi değiştirildiğinde bir objenin yok olmasını engellemek için kullanılır. Bu yöntem kullanılarak, objenin diğer sahnelere taşınması mümkündür. Bir objeyi DontDestroyOnLoad yöntemi ile taşımak için MonoBehaviour sınıfının bir örneği olarak tanımlandığı yöntemin içinde, Awake() fonksiyonu kullanılmalıdır.
DontDestroyObject Örneği: |
---|
|
Yukarıdaki örnek, DontDestroyObject adında bir sınıf tanımlar ve MonoBehaviour sınıfından kalıtım alır. Bu sınıfın içinde, Awake() fonksiyonu kullanılarak DontDestroyOnLoad yöntemi uygulanır. Bu sayede, DontDestroyObject adındaki obje, sahne değiştirildiğinde yok olmayacak ve diğer sahnelere de taşınacaktır.
{Unity Sahne Yönetimi: Veri Transferi İçin Serializable Ve DontDestroyOnLoad Yöntemleri
Unity, oyun geliştiricilerinin sahneleri yönetmek için tercih ettikleri bir oyun motorudur. Unity oyun motoru üzerinde çalışırken, sahne geçişleri sırasında veri aktarımı yapmak oldukça önemlidir. Bu veri aktarım işlemi için Serializable ve DontDestroyOnLoad yöntemlerini kullanmak mümkündür.
Serializable Nedir?
Serializable, C# programlama dilinde bulunan bir özelliktir. Bu özellik sayesinde bir sınıfın nesnesinin binary formata dönüştürülerek başka bir sınıfta yeniden oluşturulması mümkündür. Bu şekilde, bir nesneye ait tüm özellikler binary formatta korunur ve veri kaybının önüne geçilir.
DontDestroyOnLoad Nedir?
DontDestroyOnLoad, oyun sahnesi değiştirildiğinde bir nesnenin yok olmasını önleyen bir yöntemdir. Bu yöntem sayesinde, sahne değişiklikleri sırasında bile bir nesne yok olmaz ve özelliklerini korur. Böylece, aynı nesneyi farklı sahnelere taşımak mümkün olur.
Serializable ve DontDestroyOnLoad Kullanımı
Serializable ve DontDestroyOnLoad yöntemleri birlikte kullanıldığında, bir objenin tüm özelliklerini korumak ve farklı sahnelere taşımak mümkündür. Serializable kullanarak bir nesneyi binary formatta dönüştürüp başka bir sahneye geçirdiğinizde, nesnenin özellikleri korunur ve veri kaybı yaşanmaz. DontDestroyOnLoad yöntemiyle ise, bir objenin yok olmamasını sağlayarak, o objeyi diğer sahnelere de taşıyabilirsiniz.
Örnek Kullanım
Aşağıdaki örnekler ile Serializable ve DontDestroyOnLoad yöntemlerinin kullanımı açıklanmaktadır:
Serializable Örneği:
public class SerializableObject : MonoBehaviour, Serializable { public float health; public string name;}
Binary Formatta Dönüştürme:
SerializableObject currentObject = new SerializableObject();BinaryFormatter formatter = new BinaryFormatter();MemoryStream stream = new MemoryStream();formatter.Serialize(stream, currentObject);
DontDestroyOnLoad Örneği:
public class DontDestroyObject : MonoBehaviour { void Awake() { DontDestroyOnLoad(this.gameObject); }}
Sonuç olarak, Serializable ve DontDestroyOnLoad yöntemlerini kullanarak, Unity oyun motoru üzerinde sahne yönetimi yaparken, veri aktarım işlemlerini kolaylıkla gerçekleştirebilirsiniz. Bu yöntemler sayesinde, nesnelerin tüm özellikleri binary formatta korunarak, farklı sahneler arasında taşınabilir.
void Awake()void Awake(), Unity'de bir MonoBehaviour metodu olup, bir nesnenin uyanma anında çalıştırılmasını sağlar. Bu yöntemi kullanarak bir objeyi diğer sahnelere taşırken nesnenin yok olmamasını sağlarsanız, oyuncularınızın kariyer modunda kazandığı öğeleri koruyarak oyun içi ilerlemelerini sağlayabilirsiniz.
Özellik | Açıklama |
---|---|
void Awake() | Bir nesne ilk başlatıldığında uyanma anında çalışır. |
DontDestroyOnLoad(this.gameObject) | Nesnenin yok olmamasını sağlayarak diğer sahnelere taşınmasını sağlar. |
Unity, bir oyun sahnesinde veri aktarımı yaparken genellikle Serializable ve DontDestroyOnLoad yöntemlerini kullanır. Bu iki yöntem birlikte kullanıldığında, bir oyun objesinin tüm özelliklerini binary formatta koruyabilir ve farklı sahnelere taşıyabilirsiniz.
Serializable yöntemi, bir oyun objesinin binary formata dönüştürülerek başka bir sınıfta yeniden oluşturulmasını sağlar. Serializable kullanarak bir obje özelliğinin korunması sağlanır ve veri kaybı yaşanmaz. Örneğin, oyuncunun can puanı veya objenin ismi, bir sahneden diğerine geçerken korunur.
DontDestroyOnLoad yöntemi ise bir objenin yok olmamasını sağlar. Objeler, sahne değiştirdiğinde varsayılan olarak yok olur. Ancak DontDestroyOnLoad ile objelerin yok olması önlenir ve diğer sahnelere taşınır.
Bir objenin kaybolmaması, oyuncunun geri dönüşümlü bir şekilde hareket etmesine olanak tanır. Örneğin, oyuncunun bir sahnede topladığı objeler veya açtığı kapılar, diğer sahneye geçtiğinde açık veya kapalı kalır.
Serializable ve DontDestroyOnLoad yöntemleri birlikte kullanıldığında, objeler binary formatta korunarak diğer sahnelere taşınabilir ve oyuncuya daha iyi bir oyun deneyimi sağlanır.
DontDestroyOnLoad(this.gameObject);DontDestroyOnLoad yöntemi, oyun sahnesi değiştirildiğinde bir objenin yok olmamasını sağlar. Bu yöntemi kullanarak bir objeyi bir sahnedeki diğer objelerin arasından çıkarıp, diğer sahneye de taşıyabilirsiniz. DontDestroyOnLoad(this.gameObject); kodu ile ise bir objenin sahne değiştirdikten sonra yok olmasının önüne geçilebilir.
Bu özellik özellikle yoğun sahne geçişlerinde kullanışlıdır. Bir objenin aktif olduğu sahneyi terk ettiğinde yok olması gereken bir objenin, bir sonraki sahneye de taşınması istenebilir. Bu yöntem ile taşınan bir obje, aynı özelliklerle ve aynı durumda diğer sahnede de aktif olacak şekilde kalır.
}Bir oyunda sahne yönetimi yaparken, objeler arasında veri iletişimi sıkça kullanılır. Bu noktada Serializable ve DontDestroyOnLoad yöntemleri, veri aktarımını sağlamada oldukça etkili bir rol oynarlar. Serializable özelliği, bir nesnenin binary formata dönüştürülmesini ve başka bir sınıfta yeniden oluşturulmasını sağlar. Böylece, bir objeyi bir sahneye transfer ettiğinizde, nesnenin özellikleri korunur ve veri kaybı yaşamazsınız.
Öte yandan, DontDestroyOnLoad yöntemi ile bir objenin yok olmamasını sağlayabilirsiniz. Bu sayede, bir objenin farklı sahnelere taşınmasını engelleyen sorunu aşabilirsiniz. Birlikte kullanıldığında, Serializable ve DontDestroyOnLoad yöntemleri, bir objenin tüm özelliklerini binary formatta koruyabilir ve farklı sahnelere taşıyabilirsiniz.
}Unity Sahne Yönetimi: Veri Transferi İçin Serializable Ve DontDestroyOnLoad Yöntemleri
Unity oyun motoru kullanarak sahne yönetimi yaparken, veri aktarımı oldukça önemlidir. Çünkü bir sahnedeki objelerin özellikleri bir sonraki sahneye taşınmazsa veri kaybı yaşanabilir. Ancak Serializable ve DontDestroyOnLoad yöntemleri sayesinde bu sorunu çözebilirsiniz.
Serializable Nedir?
Serializable, bir sınıfın nesnesinin binary formata dönüştürülmesini ve başka bir sınıfta yeniden oluşturulmasını sağlayan bir özelliktir. Bu sayede bir objenin özellikleri korunarak farklı sahnelerde kullanılabilir.
DontDestroyOnLoad Nedir?
DontDestroyOnLoad, oyun sahnesi değiştirildiğinde bir nesnenin yok olmasını önleyen bir yöntemdir. Bu sayede bir objenin sahneler arasında taşınması mümkün hale gelir.
Serializable Kullanımı
Serializable kullanarak bir nesneyi binary formatta dönüştürüp başka bir sahneye geçirdiğinizde, nesnenin özellikleri korunur ve veri kaybı yaşanmaz. Örneğin aşağıdaki SerializableObject sınıfında bulunan health ve name özelliklerini binary formata dönüştürerek sahneler arasında taşıyabilirsiniz.
public class SerializableObject : MonoBehaviour, Serializable |
---|
public float health; |
public string name; |
Binary Formatta Dönüştürme
Aşağıdaki kod bloğunda SerializableObject nesnesi binary formata dönüştürülerek MemoryStream aracılığıyla farklı bir sahneye taşınabilir.
SerializableObject currentObject = new SerializableObject();BinaryFormatter formatter = new BinaryFormatter();MemoryStream stream = new MemoryStream();formatter.Serialize(stream, currentObject);
DontDestroyOnLoad Kullanımı
DontDestroyOnLoad yöntemiyle, bir objenin yok olmamasını sağlayarak, o objeyi diğer sahnelere de taşıyabilirsiniz. Aşağıdaki örnek DontDestroyObject sınıfı Awake() metodu içinde DontDestroyOnLoad yöntemi kullanılarak oluşturulduğu için sahneler arasında taşınabilir.
public class DontDestroyObject : MonoBehaviour { void Awake() { DontDestroyOnLoad(this.gameObject); }}
Serializable ve DontDestroyOnLoad Kullanımı
Serializable ve DontDestroyOnLoad yöntemleri birlikte kullanılarak, bir objenin tüm özellikleri binary formatta korunabilir ve farklı sahnelere taşıyabilirsiniz. Bu sayede oyuncuların oyun içindeki veri kaybı yaşama riski en aza indirgenir.
Yukarıdaki örneklerden de görüldüğü gibi Unity oyun motoru ile sahne yönetimi oldukça kolay ve verimli bir şekilde yapılabilir.
Serializable ve DontDestroyOnLoad Kullanımı
Unity sahne yönetimi yaparken, veri aktarımı oldukça önemlidir. Serializable ve DontDestroyOnLoad yöntemleri bu süreçte oldukça kullanışlıdır. Serializable nesnelerin binary formatta dönüştürülmesini ve başka bir sınıfta yeniden oluşturulmasını sağlar. DontDestroyOnLoad ise bir objenin yok olmamasını sağlayarak, o objeyi diğer sahnelere de taşıyabilirsiniz.
Ancak, Serializable ve DontDestroyOnLoad yöntemleri birlikte kullanıldığında, bir objenin tüm özellikleri binary formatta korunarak farklı sahnelere taşınabilir. Bu sayede, diğer sahnelerde objenin özelliklerini tekrar ayarlamak zorunda kalmazsınız ve veri kaybı yaşamazsınız.
Bu işlem oldukça kolaydır ve herhangi bir kodlama bilgisine ihtiyaç duymaz. Örneğin, önemli bir nesnenin sahneler arasında taşınması gerekiyorsa, Serializable özelliği eklenerek binary formatta dönüştürülebilir. Daha sonra DontDestroyOnLoad yöntemi kullanılarak, obje sahne değiştirildiğinde birlikte taşınabilir.
Bir örnek üzerinden açıklayacak olursak:
Ad | Soyad | Yaş |
---|---|---|
Ahmet | Kaya | 27 |
Ali | Can | 34 |
Bu tablo, bir oyunda önemli bir girdi verisi olabilir. Serializable özelliği eklenerek, binary formatta dönüştürülüp, farklı sahnelere kolayca taşınabilir. DontDestroyOnLoad yöntemi kullanılarak, diğer sahnelere geçildiğinde tablo tekrar oluşturulmak zorunda kalmayacak ve veri kaybı yaşanmayacaktır.
Serializable ve DontDestroyOnLoad yöntemleri, Unity sahne yönetimi sırasında oldukça kullanışlıdır. Özellikle, oyun içi veri aktarımı yaparken, bu yöntemler sayesinde veri kaybı yaşamadan, nesnelerin kolayca taşınabilmesi mümkündür.