项目中有需要用户标注的地方,类似屏幕截取中的拉矩形,效果如下
实现方法很简单,首先,将你需要标注的图片的RectTransform组件下的pivot属性,设置为0,1
因为我们到时候返回的位置是基于左上角的,然后设置你需要生成的图片
设置他铺满父物体,把pivot设置0,1,然后image透明度设置为0,因为我们不需要让他显示,只是让他保存距离顶点的位置
接下来就是代码部分,首先生成你的方框图片,设置他的初始值,保存你鼠标按下的坐标
if(Input.GetButtonDown("Fire1"))
{
img = Instantiate((GameObject)Resources.Load("动态生成的图片"));
img.transform.position = Input.mousePosition;
img.GetComponent<RectTransform>().sizeDelta = Vector2.zero;
img.transform.SetParent(transform);
startPos = Input.mousePosition;
rect = img.GetComponent<RectTransform>();
}
然后根据你鼠标移动的方向,设置生成图片的pivot属性,根据鼠标移动的距离,设置他的宽高
if(Input.GetButton("Fire1"))
{
if(Input.mousePosition.x>startPos.x)
{
rect.pivot = new Vector2(0, rect.pivot.y);
}
else
{
rect.pivot = new Vector2(1, rect.pivot.y);
}
if(Input.mousePosition.y>startPos.y)
{
rect.pivot = new Vector2(rect.pivot.x, 0);
}
else
{
rect.pivot = new Vector2(rect.pivot.x, 1);
}
rect.sizeDelta =
new Vector2(Mathf.Abs(Input.mousePosition.x - startPos.x), Mathf.Abs(Input.mousePosition.y - startPos.y));
}
最后,用你方框下的子物体,判断你方框距离父物体的距离
if(Input.GetButtonUp("Fire1"))
{
Debug.Log("X轴距离父物体" + Mathf.Abs(transform.position.x - img.transform.Find("子物体图片").position.x) +
" Y轴距离父物体" + Mathf.Abs(transform.position.y - img.transform.Find("子物体图片").position.y));
Debug.Log("img的宽" + img.GetComponent<RectTransform>().rect.width +
" img的高" + img.GetComponent<RectTransform>().rect.height);
}
整体代码如下
词不达意,敬请谅解