Çözüldü C# değişken public static olmasına rağmen diğer C# klasöründen kullanılmıyor

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

TurtleCanUsePC

Hectopat
Katılım
3 Haziran 2021
Mesajlar
1.116
Çözümler
8
Daha fazla  
Cinsiyet
Erkek
Unity de kilit sisteminde çalışıyorum ve izlediğim kişide olurken bende. Adı geçerli bağlamda yok hatası alıyorum.
1.c# dosyası (dosya ismi seviyeler)

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

public class Scene : MonoBehaviour.
{
 public static bool oyun1, oyun2 , oyun3;
 public Button seviye2, seviye3;

 void Start()
 {
 oyun1 = true;
 }

 void Update()
 {
 if(seviye2 == true)
 {
 seviye2.interactable = true;
 }

 if(seviye3 == true)
 {
 seviye3.interactable = true;
 }
 }
}

2.C# dosyası(dosya ismi bölüm bitirme)

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

public class BölümBitirme : MonoBehaviour.
{

 public void Bölüm1Bitir()
 {
 Seviyeler.oyun2 = true;
 SceneManager.LoadScene(1);
 }
 public void Bölüm2Bitir()
 {
 Seviyeler.oyun3 = true;
 SceneManager.LoadScene(1);
 }
}
 
Çözüm

İnstance adında bağlam yok hatası veriyor bu sefer.
Düzelttim. İsmi seviyeler olan dosyanın başında ki public class scene yi seviyeler diye düzelttim ve oldu.
İnstance yapınınız eksik gözüküyor.

Static olan dosyanın Awake fonksiyonuna

if(instance == null)
{
instance = this
}

Kodunu yazarsanız erişmek istedğiniz diğer dosyadan, dosyaadi.instance.fonksiyonismi şeklinde ulaşabilirsiniz
 

C#'a başlayalı çok olmadı. Sizin ne dediğinizi anlamadım tam olarak ne yapmam lazım?
 
İlk mesajınızın en üstündeki koda

Private Awake()
{
İf(instance == null)
{
instance = this;
}
}

bu kodu ekleyin. Daha sonra bu dosyadaki herhangi bir fonksiyona da dosyaadi.instance.fonksiyonismi şeklinde erişebilirsiniz
 
Şunu dener misin? Bölümbitirme scriptinize, Scene scn = New Scene();
Metodunuzun içine de scn.oyun1 yazıp dener misiniz?
 

İnstance adında bağlam yok hatası veriyor bu sefer.
Düzelttim. İsmi seviyeler olan dosyanın başında ki public class scene yi seviyeler diye düzelttim ve oldu.
 
Son düzenleme:
Çözüm
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…