2016-03-21 4 views
0

true zurück, ich eine Leinwand in der Einheit 2d Szene haben, Im Inneren I 3 UI Textelemente, ich bin, das unten Skript 2 der UI-Elemente angebrachtIsPointerOverGameObject für verschiedene ui Text in der Einheit

void Update() 
     {if (Input.GetMouseButtonDown (0)) { 


       if (EventSystem.current.IsPointerOverGameObject()) { 


        //Application.CaptureScreenshot("Bla.png"); 
        //ShareImage(Application.persistentDataPath + "/Bla.png", "dasdas", "dsadaS", "dasdas"); 

        Debug.Log ("Screenshot taken"); 
       } 
      } 
} 

Die Problem passiert, dass, wenn ich auf etwas in der Zeichenfläche klicken IsPointerOverGameObject ist immer wahr, ich habe eine andere Leinwand aber das gleiche Problem erstellt. Es ist wie sein Umgang mit allen UI-Elementen, auf die jedes Mal geklickt wird, wenn ich auf ein UI-Textelement klicke.

Ich bin ein Menü von UI Textelemente erstellen und jedes Einzelteil muss hat seine eigene Aktion, aber hier jedes Mal, wenn ich es bin Klick ist für alle

enter image description here enter image description here

+0

Müssen sie 'Text' sein und können nicht' Buttons' sein? Ist 'Raycast Target' überprüft? –

+0

Ja, ich mache sie Texte, und ja raycast Ziel wird für alle von ihnen überprüft. –

Antwort

0

Der Code, den Sie die gleiche Aktion Brennen angebracht funktioniert perfekt fein auf meiner Maschine. Ich war in der Lage replizieren Ihr Problem, indem Sie das Skript an die Leinwand, die die Elternteil meines Textes anhängen. Stellen Sie sicher, dass Sie nicht das Skript an die Canvas anhängen, sondern nur auf jede einzelne Text.

Wenn dies nicht das Problem ist, gibt es viele andere Möglichkeiten, dies in Unity zu tun. Manchmal funktioniert ein Teil der API nicht gut, da eingerichtet ist. Sie können die folgende Methode ausprobieren:

using UnityEngine.EventSystems; 
public class Clicker: MonoBehaviour, IPointerClickHandler 
{ 
    void Update() 
    { 

    } 

    public void OnPointerClick(PointerEventData eventData) 
    { 
     //Application.CaptureScreenshot("Bla.png"); 
     //ShareImage(Application.persistentDataPath + "/Bla.png", "dasdas", "dsadaS", "dasdas"); 

     Debug.Log("Screenshot taken"); 
    } 
} 
+0

Ich habe überprüft und das Skript ist nur an den UI-Text angehängt, mein Canvas-Design ist folgender: Render-Modus (Bildschirmbereich - Kamera), UI Scale-Modus (Skalieren mit Bildschirmgröße). Das komische Ding, das geschieht, ist, wenn ich auf einen ui Text klicke, erhält es blauen Rand und die anderen Elemente bekommen grauen Rand. Ich habe versucht, jeden von ihnen in verschiedenen Canvas hinzuzufügen, aber immer noch das gleiche Problem. –

+0

Canyou Bild der Canvas-Hierarchie hochladen? – Programmer

+0

Bild zur Hauptfrage hinzugefügt –

Verwandte Themen