Auf die Variable in einem anderen Skript kann nicht zugegriffen werdenC#

Ein Treffpunkt für C#-Programmierer
Guest
 Auf die Variable in einem anderen Skript kann nicht zugegriffen werden

Post by Guest »

Ich habe diese Klasse an ein PauseButton-Objekt angehängt.

Code: Select all

public class PauseButton : MonoBehaviour
{
public bool firstTimePause;
private bool checkIfPause;
public void Awake()
{
firstTimePause = false;
}
public virtual void PauseButtonAction()
{
StartCoroutine(PauseButtonCo());
}
protected virtual IEnumerator PauseButtonCo()
{
yield return null;
checkIfPause = GameObject.Find("SomeObject").GetComponent().Paused;
if (firstTimePause == false && this.gameObject.name == "ResumeBackground" && checkIfPause == true)
{
firstTimePause = true;
Debug.Log("This is getting printed");
}
}
}
Dann habe ich eine andere Klasse, die versucht, auf die Variable firstTimePause auf PauseButton zuzugreifen

Code: Select all

public class StopWatchTimer : MonoBehaviour
{
public Text textTime;

private PauseButton pauseButtonScript;
public GameObject pauseButtonObject;

// Use this for initialization
void Start()
{
pauseButtonScript = pauseButtonObject.GetComponent
();
}
void Update()
{
pauseButtonScript = pauseButtonObject.GetComponent();
Debug.Log(pauseButtonScript.firstTimePause); //this value is always false even if it was already set to true on PauseButton Class
if (pauseButtonScript.firstTimePause == true)
{
//do something
}
}
}
Warum erhalte ich für die Variable firstTimePause immer False, obwohl ich durch ein Debug.Log überprüft habe, ob sie auf True gesetzt ist
Wenn ich die Klasse so geändert habe, funktioniert sie.

Code: Select all

public class PauseButton : MonoBehaviour
{
public bool firstTimePause;
private bool checkIfPause;
public void Awake()
{
firstTimePause = false;
}
public virtual void PauseButtonAction()
{
StartCoroutine(PauseButtonCo());
}
protected virtual IEnumerator PauseButtonCo()
{
yield return null;
checkIfPause = GameObject.Find("SomeObject").GetComponent().Paused;
firstTimePause = true;
Debug.Log("This is getting printed");
}
}
Das bedeutet, dass mit der Anweisung this.gameObject.name == "ResumeBackground" && checkIfPause == true etwas nicht stimmt. Aber da in beiden Szenarien „Dies wird gedruckt“ ausgegeben wird, bin ich verwirrt, warum es nicht wie erwartet funktioniert.
Dies ist SomeObject mit GameManager
Image

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post