我在团结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文本项菜单,每个项目都必须有自己的动作,但每次点击它都会为所有文本触发相同的动作
答案 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");
}
}