So steuern Sie eine Variable zwischen Skripten in Unity und greifen darauf zu
Posted: 20 Jan 2025, 18:47
Ich habe also Skripte in Unity. Ein Hauptmenü, in dem ich die meisten meiner Funktionen und Variablen habe, und ein zweites, in dem ich nur einige Dialoge verwalte. Was ich tun möchte, ist, dass ich im ClickManager-Skript einen deklarierten Bool namens „clicked“ habe
Jetzt möchte ich, dass nach dem Klicken auf ein Objekt es auf „true“ gesetzt wird, was funktioniert. Aber ich habe auch im zweiten Skript Zugriff auf das erste Skript wie diesen ClickManager clickManager; Ich habe auch in der Update-Funktion den Status überprüft, wenn er nicht wahr ist, so:
Jetzt tritt das Problem in Verbindung mit dem Debug.Log auf, da der folgende Fehler zurückgegeben wird
Nach meinem Wissen oder meinem gesunden Menschenverstand gehe ich davon aus, dass das Problem darin besteht, dass das zweite Skript nicht auf den Bool-Wert des ersten Skripts zugreifen kann.
Ich habe versucht, das zu deklarieren Variable im zweiten Skript und Zugriff darauf über das erste. Gleiches Problem. Ich habe auch versucht, diesen clickManager = GetComponent(); in der Start()-Funktion zu verwenden, was zu keiner Änderung geführt hat.
Ich habe auch eine Get-Funktion wie diese ausprobiert:
Welches Jahr hat nichts gebracht
Code: Select all
using UnityEditor.PackageManager;
using UnityEngine;
public class ClickManager : MonoBehaviour
{
public bool clicked{ get; set; }
public void Start()
{
clicked = false;
}
Code: Select all
void Update()
{
**Debug.Log(clickManager.clicked);**
if(clickManager.clicked)
{
StartDialogue();
//clickManager.clickManager.clicked = false;
}
}
Code: Select all
NullReferenceException: Object reference not set to an instance of an object
Dialogue.Update () (at Assets/Dialogue.cs:27)
Ich habe versucht, das zu deklarieren Variable im zweiten Skript und Zugriff darauf über das erste. Gleiches Problem. Ich habe auch versucht, diesen clickManager = GetComponent(); in der Start()-Funktion zu verwenden, was zu keiner Änderung geführt hat.
Ich habe auch eine Get-Funktion wie diese ausprobiert:
Code: Select all
private bool getClicked()
{
return clickManager.clicked;
}