Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 如何获取单击UI元素的位置_Unity3d_User Interface - Fatal编程技术网

Unity3d 如何获取单击UI元素的位置

Unity3d 如何获取单击UI元素的位置,unity3d,user-interface,Unity3d,User Interface,单击或触摸时,如何获取UI对象上的点?从我对光线投射的正常理解来看,在UI元素中,单击不能完成的地方。OnClick事件并没有提供任何额外的信息。我会使用事件 有相当多的其他数据可以给你,以及其他数据提供 如果不需要单击的worldPosition,也不需要ScreenPosition,可以使用将这些坐标转换为对象的本地RectTransform位置 如果您在屏幕空间-覆盖中使用画布,则必须将null作为摄像机的参数传递给RectTransformUtility 文档中要提到的另一个注释是 从事

单击或触摸时,如何获取UI对象上的点?从我对光线投射的正常理解来看,在UI元素中,单击不能完成的地方。OnClick事件并没有提供任何额外的信息。

我会使用事件

有相当多的其他数据可以给你,以及其他数据提供

如果不需要单击的
worldPosition
,也不需要
ScreenPosition
,可以使用将这些坐标转换为对象的本地
RectTransform
位置

如果您在
屏幕空间-覆盖
中使用
画布
,则必须将
null
作为
摄像机
的参数传递给
RectTransformUtility

文档中要提到的另一个注释是

从事件中使用ScreenPointToLocalPointInRectangle时 提供PointerEventData对象(正确的摄影机)的处理程序 可通过使用PointerEventData.enterEventData(用于悬停)获得 功能)或指向EventData.pressEventCamera(用于单击 功能)。这将自动使用正确的摄像头(或 对于给定的事件


请告诉我您的情况。

光线投射,查看在哪些地方无法使用UI元素进行单击。。嗯,是的,它可以:我也关闭了这一个作为一个副本。如果这是一个不同的问题,请随意解释原因,我们可以重新打开这个问题。。虽然这一条更为笼统和不明确
using UnityEngine.EventSystem;

public class AScriptOnYourUIElement : MonoBehaviour, IPointerClickHandler
{
    //Detect if a click occurs - this is a callback, you do NOT have to call this
    public void OnPointerClick(PointerEventData pointerEventData)
    {
        Debug.Log(pointerEventData.pointerCurrentRaycast.worldPosition);
    }
}