C# interakcja między skryptami (zmienne)

1

Cześć , od niedawna zajmuję się programowaniem . Mam dla was dość podstawowe pytanie . Chcę użyć zmiennej "playtime" w drugim skrypcie .

 public class Timer : MonoBehaviour
{
   
    public int playtime = 0;
    private int seconds = 0;
    private int minutes = 0;
    private bool timeVisible = true;


    


    void Start()
    {
        StartCoroutine("PlayTime");


    }

    

    public IEnumerator PlayTime()
    {
        while (true)
        {
            yield return new WaitForSeconds(1);
            playtime += 1;
            seconds = (playtime % 60);
            minutes = (playtime / 60) % 60;

        }
    }
    void OnGUI()
    {
        GUI.Label(new Rect(50, 50, 100, 50), minutes.ToString() + " : " + seconds.ToString());
    }




}

Próbowałem coś takiego napisać ale coś niepykło ;) :

 public class ActiveObjects : MonoBehaviour
{
    Timer timer = new Timer();
    


    void Update()
    {
        
        if(timer.playtime>10)
        {
            Debug.Log("Hello", gameObject); 
        }
    }
    

}
                                                                                                                        Z góry dziękuję za pomoc .
1

Możesz rozwinąć to "coś nie pykło".
Jakiś błąd kompilatora, czy komputer wybuchł?

2

@mcErykO napisalbys ze to Unity3d bo patrzac na to kod, to ciezko to stwierdzic...

w drugiej klasie jak masz

Timer timer = new Timer(); 

zamien to na

public Timer timer

i w inspektorze na to pole przeciagnij obiekt zze skryptem pierwszym

i juz bedzie dzialac ;)

jezeli nie chcesz przepisywac przez inspektor to mozesz napisac tak

GameObject myObject =  GameObject.Find("ObjectName");
timer = myObject.GetComponent<Timer>(); 

tylko ze find jest droga operacja bo szuka po calej hierarchi. Najlepiej by uzyc find z transform bo on szuka jedynie po dzieciach. Ale zeby to zadzialalo musisz miec porzadek w hierarchii

0

Wielkie dzięki :)

fasadin napisał(a):

@mcErykO napisalbys ze to Unity3d bo patrzac na to kod, to ciezko to stwierdzic...

Sorki , miałem to napisać ale zapomniałem , pewnie dlatego że zaczynając pisać post byłem trzeźwy ale kończąc już nie a chciałem wysłać temat aby uzyskać na teraz odpowiedź :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1