Witam. Pojawił mi się dziwny problem w moim projekcie unity. Najlepiej pokaże kod:
public class PrzepisSelect : MonoBehaviour
{
public string on_off;
void Update() //Wywyołuję się co klatkę (co chwilę)
{
Debug.LogError(on_off); //Działa jak Console.WriteLine
}
void Start() { PrzepisTP("on"); } //Wywołuję się przy starcie skryptu (1 raz na początku)
public void PrzepisTP(string on)
{
if (on == "on")
{
//instrukcje (bez modyfikacji zmiennej on_off, ani on)
}
if(on == "off")
{
//instrukcje (bez modyfikacji zmiennej on_off, ani on)
}
on_off = on;
Debug.LogWarning(on_off); //Działa jak Console.WriteLine
}
}
public class BoxMove : MonoBehaviour //Metoda odpowiedzialna za poruszanie obrazem
{
private PrzepisSelect PS;
void Start() //Wywołuję się przy starcie (1 raz na początku)
{
PS = gameObject.AddComponent<PrzepisSelect>(); //Działa tak jak: (PrzepisSelect)PS = new PrzepisSelect();
}
void Update () //Wywołuję się co klatkę (co chwile)
{
Debug.Log(PS.on_off); //Działa jak Console.WriteLine
if (PS.on_off == "off")
{
//instrukcje
}
}
}
Oprócz tego jest jeszcze guzik który wywołuje PrzepisTP z wartością off - da się go kliknąć tylko jeden raz.
A tak wyglądają logi:
Debug.Warring jest wywoływane w PrzepisTP
Debug.Error w Update w PrzepisSelect (tam gdzie PrzepisTP)
A Debug.Log w Update w BoxMove (tam gdzie if)
A więc czemu zmienna sama się zmienia. Jest to dla mnie bardzo nie zrozumiałe. Proszę o pomoc.