IsPointerOverGameObject为统一的不同ui文本返回true

时间:2016-03-21 21:19:36

标签: unity3d

我在团结2d场景中有一个画布,在里面我有3个UI文本元素,我将下面的脚本附加到2个UI元素

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");
                }
            }
}

问题正在发生如果我点击画布内的任何东西IsPointerOverGameObject总是返回true,我创建了另一个画布但同样的问题。这就像每次单击任何UI文本元素时处理所有UI元素一样。

我正在创建一个UI文本项菜单,每个项目都必须有自己的动作,但每次点击它都会为所有文本触发相同的动作

enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

您附加的代码在我的计算机上完美正常 正常。通过将脚本附加到 Canvas (我的文本的),我能够复制您的问题。确保您没有附加脚本到画布,但仅限于每个Text

如果这不是问题,还有很多其他方法可以在Unity中执行此操作。有时,由于UI的设置方式,某些API无法正常运行。您可以尝试以下方法:

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");
    }
}