Kayıt Ol

Giriş

Şifremi Kaybettim

Şifreni mi unuttun? Lütfen e-mail adresinizi giriniz. Bir bağlantı alacaksınız ve e-posta yoluyla yeni bir şifre oluşturacaksınız.

Giriş

Kayıt Ol

(Çözüm) Unity 3D NullReferenceException: Object reference not set Hatası

Semptom

Aşağıdaki hata ile karşılaşırsınız. Ve komut verdiğiniz işlem gerçekleşmez.

NullReferenceException: Object reference not set to an instance of an object
sureScript.Update () (at Assets/sureScript.cs:41)

Sebebi

Bu hatayı görmenizin sebebi değişken ya da dizileriniz üzerinden işlem yaptırmaya çalıştığınız tanımlamaların yada içerisindeki verinin bulunamamış olmasıdır.

Eğer console’da hatanın üzerine tıklarsan problemli scriptin bulunduğu obje hiyerarşi panelinde sarı renk ile gösterilir.

Örnek 1 (Detaylı)

Aşağıdaki örnekte int türü diziAdi1 ve diziAdi2 isimlerinde iki adet dizi tanımlanmıştır.
Start fonksiyonunda dizi eleman sayısı belirlenerek diziler kullanılabilir şekilde oluşturulmuştur.
Update kısmında tanımlanan dizi elemanlarına içerinkleri yüklenmiştir.
Ve son olarak print komutu ile her iki dizinin de üçüncü elamanının console’a yazdırılması emri verilmiştir.

public int[] diziAdi1,diziAdi2;

public class OrnekScript
{

Start
{
diziAdi1 = new int[3];
diziAdi1 = new int[3];
}

Update
{

diziAdi1[0] = “571”;
diziAdi1[1] = “612”;
diziAdi1[2] = “1024”;
diziAdi2[0] = “572”;
diziAdi2[1] = “613”;
diziAdi2[2] = “1025”;

print(“DiziAdi1 3.elemanı” + diziAdi1[3]);
print(“DiziAdi2 3.elemanı” + diziAdi2[3]);
}

}

Örnek 2 (Basit)

Bu örnekte görüleceği üzere canvas üzerinde bir Text oluşturulmuş ve bu texte yazı aktarımı yapılması amaçlanmıştır. Kod kısmında bir problem yoktur. Fakat gözden kaçan birşey var çözümde inceleyelim…

using UnityEngine.UI;

public Text yazilik;

public class OrnekScript
{
start()
{
yazilik.Text = “Deneme Bir İki Üç”;
}

}

Hata Çözüm

Örnek 1 Çözüm

Bu örneğe göre consoleda aşağıdaki gibi ayrıntılı bir hata çıkacaktır.

OrnekScript.Update () (at Assets/sureScript.cs:(satırsayısı))

Eğer örneği dikkatli incelediyseniz sorunu hemen fark edeceksiniz. Tanım kısmında diziAdi1,diziAdi2 olarak diziler adlandırılmıştır. Fakat Start fonksiyonunda dizi eleman sayısı belirlenirken her ikisi dizinin adı da aynı olmuştur(diziAdi1). Dalgınlık bu tarz hatalara neden olabilir. Ve bunların üzerine Update fonksiyonunda diziAdi2’nin elemanlarına veri aktarımı sağlanmaya çalışılmıştır. Tabi dizi tanımlaması doğru gerçekleşmediği için sistem tanımlamaların bulunamadığına dair hata verecektir.  Takdir edersiniz ki burada tek yapılması gereken ikinci kez tekrarlanan diziAdı1’in diziAdi2 olarak değiştirilmesidir. Böylecek sorun çözülecektir.

Örnek 2 Çözüm

Eğer Canvasınızda bir Text oluşturduysanız ve script ile bu Text’e yazı aktarımı gerçekleştirmek istiyorsanız. Scriptinizin içerisinde bulunduğu objenin Inspector kısmında örnekteki gibi “yazilik” isminde Text nesnesini yerleştirmenizi isteyecektir. Buraya yerleştirmediğiniz takdirde None(Text) yazısı ile karşılaşırsınız.

 

İlgini Çekebilecek makaleler;

Unity 3D C# derleme hataları nasıl yorumlanır ?

Bağımsız(indie) Oyun Geliştiricisi kime denir ? ve Neler yapar?

Hakkında Eyüp Yılmaz

Şu sıralar insan ve kainat araştırmalarında... Hayat'ın kaynağını merak ediyor...

Beni Takip Et

Cevap bırakın