2016-04-12 30 views
1

bu hata alınır sahneyi kapatırken bazı nesneler temizlediğini değil: sahnesini kapatırkensahne yüküne konsolda

Bazı nesneler temizlediğini değildi. (Eğer OnDestroy yeni GameObjects yumurtlamaya mü?)

ben Instantiate bir OnDestroy yönteminde bir nesne ve uygulamaya bu sorun çıkın how to fix biliyorum çünkü biliyorum. Ama ben bu değişikliğin OnSceneUnload gibi bir ihtiyacı var mı?

void OnLevelWasLoaded(int level) 
    { 
     if (Application.loadedLevelName == "MyNextScene") 
     { 
      // Clean Up leaked objects 
     } 
    } 

Bu çağrıldığında sahne değişiklikleri:

+0

Sanırım bir tasarım sorununa sahip olabilirsiniz. Kodunuzda çelişki var gibi görünüyor. OnDestroy sahneyi değiştirirken yeni bir nesne oluşturur. Bu bana uygun gelmiyor. PlayerPrefs aracılığıyla nesneye duyulan ihtiyaç hakkındaki bilgileri saklamak ve yeni sahnede oyuncu prefs'i okuyarak nesneyi oluşturmak istiyorum. – Everts

cevap

0

Sen OnLevelWasLoaded(int level) gibi kullanabilirsiniz.

GÜNCELLEME:

void Awake() 
{ 
    DontDestroyOnLoad(this.gameObject); 
} 

Ardından mağaza: öneri Üstü

Bu komut dosyasında böyle bir şey kullanmak gerekir kadar ikonların, yeni sahne yüklendiğinde temizledik isnt komut dosyası oluşturmak için oldu Bu, bu betiğin bazı koleksiyonlarındaki nesneleri temizlemez ve sahne değiştiğinde bunu sizin için temizlemesine izin verir.

+0

Teşekkürler! Çalışmıyor gibi gözüküyor. 'OnDestroy' yöntemiyle her komut dosyasında geçersiz 'OnLevelWasLoaded (int seviye) {isQuitting = true;}' ekledim ve hala çalışmıyor (btw, hala uygulama çıktısında çalışıyor ve aynı kod) –

+0

Well Yapmanız gereken şey, bu sihirli yöntemi, sahneler arasında süren herhangi bir aktif MonoBeahaviour'a eklemek ("DontDestroyOnLoad (this.gameObject) gibi);) –

+0

@ rap-2-h Cevabımı düzenledim, umarım daha açık olur şimdi. –