这里我用的的英文位移用了
Translate和Vector3.Lerp
使用鼠标位置的判断结合菜单栏的位置状态来进行开关控制
这里面有一个坑就是锚点坐标,UI界面显示的都是锚点坐标,跟UI的世界坐标和当地坐标没有半毛钱的关系(开始的时候我纠结到坐标位移问题上了)
其实这里用动画的话还是比较方便的,但是我这里直接用代码写了位移,做个笔记以后再遇见UI位移问题就不会出错了
下面直接上代码(这段代码封装到一个函数里面直接放到更新函数中就可以啦):
if (PanelScrollViewUI.transform.GetComponent<RectTransform>().anchoredPosition.x >= f)//这个数值是UI的x位置
UIIsMovetr = true;
if (PanelScrollViewUI.transform.GetComponent<RectTransform>().anchoredPosition.x <= -f)
UIIsMovefa = true;
// UI按钮界面的显示时
if (Input.mousePosition.x > && UIIsMovetr)
{
Debug.Log("UI按钮界面的显示时");
PanelScrollViewUI.transform.GetComponent<RectTransform>().Translate(Vector3.Lerp(PanelScrollViewUI.transform.GetComponent<RectTransform>().anchoredPosition, PanelScrollViewUI.transform.GetComponent<RectTransform>().anchoredPosition=new Vector2(-f,), UIMoveSpeed*Time.deltaTime));
if (PanelScrollViewUI.transform.GetComponent<RectTransform>().anchoredPosition.x<=-f)
{
UIIsMovetr = false;
PanelScrollViewUI.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-f, );
}
}
// UI按钮界面的隐藏时
if (Input.mousePosition.x > && Input.mousePosition.x < && UIIsMovefa)
{
Debug.Log("UI按钮界面的隐藏时");
PanelScrollViewUI.transform.GetComponent<RectTransform>().Translate(Vector3.Lerp(PanelScrollViewUI.transform.GetComponent<RectTransform>().anchoredPosition, PanelScrollViewUI.transform.GetComponent<RectTransform>().anchoredPosition=new Vector2(f,), UIMoveSpeed * Time.deltaTime));
if (PanelScrollViewUI.transform.GetComponent<RectTransform>().anchoredPosition.x >= f)
{
UIIsMovefa = false;
PanelScrollViewUI.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(f, );
}
}