DontDestroyOnLoad
ile garip bir sorunum var. Bir başlangıç sahnesi olarak bir haritanım var. Oradan, kullanıcı belirli harita nesnelerini tıklayabilir ve Application.LoadLevel()
ile yeni bir seviye yükleyebilir. Seviye bittiğinde harita tekrar yüklenir. Ancak, DontDestroyOnLoad
ekli nesneler ikinci yükte çoğaltılır.DontDestroyOnLoad() nedeniyle çoğaltmalar()
Güncel komut dosyası: Çevrimiçi arama ve çiftleri kaldırmak için bu olası bir çözüm buldu
void Awake()
{
DontDestroyOnLoad(transform.gameObject);
}
:
public class NoDestroy : MonoBehaviour {
public static NoDestroy instance;
void Awake()
{
if (instance == null)
{
instance = this;
}
else
{
Destroy(this.gameObject);
return;
}
DontDestroyOnLoad(this.gameObject);
}
}
yukarıdaki script sadece çalışmaz. Sorunu nasıl düzeltebilirim? daha kötüsü, aynı davranışı kullanmayı deneyin diğer nesneleri sileceğiz - Yukarıdaki komut dosyası static
örneğini kullandığından
asla, bir zamanlar Unity'de statik kullanmayın. *** OO sistemi değil, ECS. *** Unity'de asla "this" anahtar sözcüğünü kullanmayın, eğer bunu yaparsanız tamamen yanlış bir şey yapıyorsunuz demektir. *** bir OO sistemi değildir, bu bir ECS değildir. *** http://stackoverflow.com/a/35723305/294884 – Fattie
(heh) Not: "kopyaları" kaldırmak için * teknik olarak kesinlikle mümkün değil * en azından, çerçevelerin içinde değil, bu yüzden de bunun sonu) - sık sık, "tekli gibi bir şey" in olduğu OO'daki gibi bir durum oluşturmak için insanların "kopyaları çıkarmaya" çalıştıkları gülünç kod örnekleri görüyorsunuz. ECS tamamen farklı. – Fattie