Anzeige

Warum ändert sich mein Boolean?

#1
Hallo Leute
Ich mache ein bisschen Puzzle-Spiel, aber ich kämpfe mit etwas. Meine boolesche Variable crossButtonClicked verhält sich seltsam. Ich initialisiere es am Anfang falsch und mache es wahr, wenn der Zeiger über einem Kreuz-Button ist, indem ich es im OnPointerEnter-Event wahr mache. Ich habe einige dieser beiden Bedingungen getestet, wenn (crossButtonClicked == true) und sonst if (crossButtonClicked = = false) gibt true zurück, was merkwürdig ist, da ich meinen Boolean nirgendwo außer im OnPointerEnter-Ereignis ändere.
Vielen Dank im Voraus

Code:
 public class EventHandler : MonoBehaviour,IPointerEnterHandler
     {
    
         private bool buttonClicked=false;
         private bool crossButtonClicked = false;
         private GameObject youWonPanel;
         private Image image;
         private GameObject youLostPanel;
        
    
    
         void Awake()
         {
             youWonPanel = GameObject.Find("You Won");
             youLostPanel = GameObject.Find("YouLostPanel");
            
         }
         void Start()
         {
            
             image = gameObject.GetComponent<Image>();
             youWonPanel.SetActive(false);
             youLostPanel.SetActive(false);
            
         }
    
         void Update()
         {
    
             for (int i = 0; i < Input.touchCount; i++)
             {
                 Touch touch = Input.GetTouch(i);
                 if (touch.phase==TouchPhase.Moved)
                 {
                    
                     if (buttonClicked == true)
                     {
                         image.color= Color.blue;
                        
                     }
                    
                 }
                 if (touch.phase == TouchPhase.Ended)
                 {
                     Debug.Log("touch phase ended " + touch.position);
                     //Debug.Log((Vector2)GameManager.starButtons[0].transform.position);
                     //Debug.Log((Vector2)GameManager.starButtons[1].transform.position);
                     float distance1 = Vector2.Distance(GameManager.starButtons[0].transform.position, touch.position);
                     float distance2 = Vector2.Distance(GameManager.starButtons[1].transform.position, touch.position);
                     Debug.Log("DIstance1 is " + distance1);
                     Debug.Log("Distance2 is " + distance2);
    
                     if (distance1 < 50f || distance2 < 50f)
                     {
                        
                         if (crossButtonClicked == true)
                         {
                             youLostPanel.SetActive(true);
                             for (int j = 0; j < GameManager.temporaryCross.Length; j++)
                             {
                                 if (GameManager.temporaryCross[j] != null)
                                 {
                                     GameManager.temporaryCross[j].SetActive(true);
                                 }
    
                             }
                         }
    
                        else if(crossButtonClicked==false)
                         {
                             youWonPanel.SetActive(true);
                             Debug.Log(crossButtonClicked);
                         }
    
                     }
                     else
                     {
                         image.color = Color.white;
                         buttonClicked = false;
                     }
                    
                 }
             }
         }
    
         public void OnPointerEnter(PointerEventData eventData)
         {
             Debug.Log("Im on button " + gameObject.name);
             if (eventData.pointerCurrentRaycast.gameObject != null)
             {
                 for(int i = 0; i < GameManager.temporaryButtons.Length; i++)
                 {
                     if (eventData.pointerCurrentRaycast.gameObject.name == "CrossButtons")
                     {
                         Debug.Log("Pointer over crossButton");
                         crossButtonClicked = true;
                        
                     }
                 }
                 Debug.Log("Mouse Over: " + eventData.pointerCurrentRaycast.gameObject.name);
             }
            
    
             buttonClicked = true;
    
         }
 

HonniCilest

Erfahrenes Mitglied
#2
C# ist doch kein Java!

Aber ehrlich gesagt verstehe ich dein Problem nicht ganz, willst du sagen, dass das hier true ausgibt?

C#:
else if(crossButtonClicked==false) {
     youWonPanel.SetActive(true);
    Debug.Log(crossButtonClicked);
 }
 
Anzeige
Anzeige