"NullReferenceException: Object reference not set to an instance of an object" hatası

Mçınar

Hectopat
Katılım
5 Ağustos 2019
Mesajlar
461
NullReferenceException: Object reference not set to an instance of an object
Dusman_harektleri. OnTriggerEnter2D (UnityEngine. Collider2D nesne) (at Assets/dusman_harektleri.cs:41)

hata alınan satır" developers.gecen_dusman();"


Dusmanlar destroy gameobjectine değdiğinde oyun duruyor ve bu hatayı veriyor. Developer adlı scriptim içindeki fonksiyonu burada çalıştır dediğimde oyunu durduruyor.
Dusman hareketleri script;

Kod:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class dusman_harektleri : MonoBehaviour
{
 public float hiz;
 private kup1 kuplerim;
 private int kup_numarasi;

 public GameObject canvas;
 developer developers;

 void Start()
 {
 kuplerim = GameObject.FindGameObjectWithTag("takip_nesne").GetComponent<kup1>();

 }
 void Update()
 {
 transform.position = Vector2.MoveTowards(transform.position, kuplerim.kupler[kup_numarasi].position, hiz * Time.deltaTime);

 if (Vector2.Distance(transform.position, kuplerim.kupler[kup_numarasi].position) < 0.1f)
 {
 kup_numarasi++;
 }

 }
 private void OnTriggerEnter2D(Collider2D nesne)
 {
 if (nesne.gameObject.name == "destroy")
 {
 Destroy(gameObject);
 developers.gecen_dusman();
 }
 }
}
 
Son düzenleme:
Destroy(gameObject) dediğiniz zaman kendi objenizi yok ediyorsunuz. Ve eğer bu scripte erişmeye çalışan başka bir script varsa artık bu scripte erişemiyor. Developers scripti olmayan bir script üzerinde çalışmaya çalıştığı için hata veriyor. Developersı destroydan önce çağırırsanız hata vermeyebilir ama genel olarak yok edilmiş bir objeye erişmek bu hatayı verir
 
Destroy(gameObject) dediğiniz zaman kendi objenizi yok ediyorsunuz. Ve eğer bu scripte erişmeye çalışan başka bir script varsa artık bu scripte erişemiyor. Developers scripti olmayan bir script üzerinde çalışmaya çalıştığı için hata veriyor. Developersı destroydan önce çağırırsanız hata vermeyebilir ama genel olarak yok edilmiş bir objeye erişmek bu hatayı verir

Hocam dediğiniz yöntemi de denedim hatta varis_noktasi gameobject de ekledim ayrıca destroy olmadan önce çalışsın diye ama varis_noktasi kısmında oyun duruyor.

12.PNG


Kod:
    private void OnTriggerEnter2D(Collider2D nesne)
    {
        if (nesne.gameObject.name == "varis_noktasi")
        {
            Debug.Log("vardııı");
            developerst.gecen_dusman();
        }
        if (nesne.gameObject.name == "destroy")
        {
            Destroy(gameObject);
            
         //  developers.gecen_dusman();
        }
    }
 
OnTriggerEnter metodunun içinde Debug.Log(nesne); yazar mısınız? Çarpışmadan sonra nesne objesi yok ediliyor muhtemelen. Nesne objesi null olunca onun adına erişirken hata alıyorsunuz.
 
43. satırda ne yazıyor atabilir misiniz? Yukarıdaki şey debug.log nesnenin sonucu değil mi
43 satıra gittiğimde ;
developerst.gecen_dusman();

43. satırda ne yazıyor atabilir misiniz? Yukarıdaki şey debug.log nesnenin sonucu değil mi?

Hocam istediğim şu developer scriptim içindeki gecen_dusman() fonksiyonun içeriğini çalıştırcak.
Ve textmeshpro 0/15 iken gecen dusman sayisi 1/15 olacak sürekli artıcak özetlersem;
Bir de prefab içerisindeki dusman gamobjeme canvası sürükleyip götürdüğümde kabul etmiyor bu sebebi olabilir mi?

wwwww.PNG


konu_güncel_arkadaşlar_yardımcı_olabilir_misiniz???
 
Son düzenleme:
43 satıra gittiğimde ;
developerst.gecen_dusman();



Hocam istediğim şu developer scriptim içindeki gecen_dusman() fonksiyonun içeriğini çalıştırcak.
Ve textmeshpro 0/15 iken gecen dusman sayisi 1/15 olacak sürekli artıcak özetlersem;
Bir de prefab içerisindeki dusman gamobjeme canvası sürükleyip götürdüğümde kabul etmiyor bu sebebi olabilir mi?

Eki Görüntüle 1536827

konu_güncel_arkadaşlar_yardımcı_olabilir_misiniz???
bu scripte developerst referansını nereden veriyorsunuz? developerst scriptini nerede = şu olsun diye alıyor yani
 

Geri
Yukarı