Aşağıdaki değişkeni vereceğimiz script;Cevabınız için çok teşekkür ederim. C# ve uniyt'de biraz yeniyim.
Diyelim public int sayi = "1"; değişkenimiz var. Bunu bu kod ile nasıl kullanabilirim.
Hiç php'ye benzemiyor çok zorlanıyorum![]()
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DeğişkenGöndermeScripti : MonoBehaviour
{
int gönderilecekSayi;
void DeğişkeniGönder()
{
var manager = GameObject.FindObjectOfType<DontDestroy>().GetComponent<DontDestroy>();
manager.sayi = gönderilecekSayi;
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DontDestroy : MonoBehaviour
{
public int sayi;
void Awake()
{
DontDestroyOnLoad(this.gameObject);
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DeğişkenAlmaScripti : MonoBehaviour
{
int gelenDeğişken;
void DeğişkeniGönder()
{
var manager = GameObject.FindObjectOfType<DontDestroy>().GetComponent<DontDestroy>();
gelenDeğişken = manager.sayi;
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DontDestroy : MonoBehaviour
{
void Awake()
{
DontDestroyOnLoad(this.gameObject);
}
}
DontDestroyOnLoad() komutunu kullanabilirsiniz.
Örneğin, aşağıdaki kod gibi yaparsanız; kodun bulunduğu obje artık sahne geçişlerinde her zaman aktif kalacaktır. Bu script ile değişkenlerinizi aktarabilirsiniz.
Kod:using System.Collections; using System.Collections.Generic; using UnityEngine; public class DontDestroy : MonoBehaviour { void Awake() { DontDestroyOnLoad(this.gameObject); } }
Aşağıdaki değişkeni vereceğimiz script;Cevabınız için çok teşekkür ederim. C# ve uniyt'de biraz yeniyim.
Diyelim public int sayi = "1"; değişkenimiz var. Bunu bu kod ile nasıl kullanabilirim.
Hiç php'ye benzemiyor çok zorlanıyorum![]()
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DeğişkenGöndermeScripti : MonoBehaviour
{
int gönderilecekSayi;
void DeğişkeniGönder()
{
var manager = GameObject.FindObjectOfType<DontDestroy>().GetComponent<DontDestroy>();
manager.sayi = gönderilecekSayi;
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DontDestroy : MonoBehaviour
{
public int sayi;
void Awake()
{
DontDestroyOnLoad(this.gameObject);
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DeğişkenAlmaScripti : MonoBehaviour
{
int gelenDeğişken;
void DeğişkeniGönder()
{
var manager = GameObject.FindObjectOfType<DontDestroy>().GetComponent<DontDestroy>();
gelenDeğişken = manager.sayi;
}
}
Aşağıdaki değişkeni vereceğimiz script;
Kod:using System.Collections; using System.Collections.Generic; using UnityEngine; public class DeğişkenGöndermeScripti : MonoBehaviour { int gönderilecekSayi; void DeğişkeniGönder() { var manager = GameObject.FindObjectOfType<DontDestroy>().GetComponent<DontDestroy>(); manager.sayi = gönderilecekSayi; } }
Aşağıdaki bizim değişken aktarımı yapacağımız script;
Kod:using System.Collections; using System.Collections.Generic; using UnityEngine; public class DontDestroy : MonoBehaviour { public int sayi; void Awake() { DontDestroyOnLoad(this.gameObject); } }
Aşağıdaki script ise sonraki sahnede değişkeni alacağımız script.
Kod:using System.Collections; using System.Collections.Generic; using UnityEngine; public class DeğişkenAlmaScripti : MonoBehaviour { int gelenDeğişken; void DeğişkeniGönder() { var manager = GameObject.FindObjectOfType<DontDestroy>().GetComponent<DontDestroy>(); gelenDeğişken = manager.sayi; } }
Kısaca anlatmak gerekirse,
İlk scriptte sahne aktarımında silinmeyen scriptimizi bulup buna istediğimiz değeri veriyoruz. En son adımda ise tekrardan aktarımda görevli scripte erişip, bu script içerisinden istediğimiz deiğişkeni alıyoruz.
DeğişkenGöndermeScripti ile DeğişkenAlmaScripti farklı sahnelerdeki scriptler oluyor.
Evet, doğru anlamışsınız.Şimdi anladığım kadarıyla toplam 3 script dosyası olacak. İlk sahnede kendi scripti ve DontDestroy scripti yüklü olacak. Sahne değişincede son sahnenin scripti ve yine DontDestroy scripti yüklü olacak değil mi?
Arkadaşlar cevaplarınız için çok teşekkür ederim. Abdullah Bey'in verdiği kodlarla yaptım. Kendisi çok yardımcı oldu. Tekrardan teşekkür ederim. Bir değişken göndermek bu kadar zor olmamalıAşağıdaki değişkeni vereceğimiz script;
Kod:using System.Collections; using System.Collections.Generic; using UnityEngine; public class DeğişkenGöndermeScripti : MonoBehaviour { int gönderilecekSayi; void DeğişkeniGönder() { var manager = GameObject.FindObjectOfType<DontDestroy>().GetComponent<DontDestroy>(); manager.sayi = gönderilecekSayi; } }
Aşağıdaki bizim değişken aktarımı yapacağımız script;
Kod:using System.Collections; using System.Collections.Generic; using UnityEngine; public class DontDestroy : MonoBehaviour { public int sayi; void Awake() { DontDestroyOnLoad(this.gameObject); } }
Aşağıdaki script ise sonraki sahnede değişkeni alacağımız script.
Kod:using System.Collections; using System.Collections.Generic; using UnityEngine; public class DeğişkenAlmaScripti : MonoBehaviour { int gelenDeğişken; void DeğişkeniGönder() { var manager = GameObject.FindObjectOfType<DontDestroy>().GetComponent<DontDestroy>(); gelenDeğişken = manager.sayi; } }
Kısaca anlatmak gerekirse,
İlk scriptte sahne aktarımında silinmeyen scriptimizi bulup buna istediğimiz değeri veriyoruz. En son adımda ise tekrardan aktarımda görevli scripte erişip, bu script içerisinden istediğimiz deiğişkeni alıyoruz.
DeğişkenGöndermeScripti ile DeğişkenAlmaScripti farklı sahnelerdeki scriptler oluyor.
Abdullah hocam string ve int değişkenlerini bu kodlar ile aktarabiliyoruz. object değişkenini nasıl yapmamız lazım? object olarak atayınca görmüyor çünkü. Bu konuda bilginiz var mı acaba?Evet, doğru anlamışsınız.
Hocam sahneler değişince objeler siliniyor. Bunun için farklı bir yöntem uygulanabilir. Mesela bir int değeri aktarırsınız bu int değerine göre yeni bir obje Instantiate edersiniz. Direk objeyi aktarmak için objeye de DontDestroy komutunu vermeniz gerekiyor.Abdullah hocam string ve int değişkenlerini bu kodlar ile aktarabiliyoruz. object değişkenini nasıl yapmamız lazım? object olarak atayınca görmüyor çünkü. Bu konuda bilginiz var mı acaba?
SceneManager.LoadScene("YeniSahne", LoadSceneMode.Additive);
Bu sitenin çalışmasını sağlamak için gerekli çerezleri ve deneyiminizi iyileştirmek için isteğe bağlı çerezleri kullanıyoruz.