private void toUpdate()
if (Input.GetMouseButtonDown(0))
{
Get_OnClickDownToObj(cheackDown_ObjName);//获取鼠标停留处的UI
}
if (Input.GetMouseButtonUp(0))
{
Get_OnClickUpToObj();
}
}
private GraphicRaycaster gr;
private PointerEventData _pointerEventDatas =new PointerEventData(EventSystem.current) ;
private void Get_OnClickDownToObj(string cheackName)
{
pointerEventData.position = Input.mousePosition;
if (gr==null) { gr =m_Canvas.GetComponent<GraphicRaycaster>(); }
List<RaycastResult> results = new List<RaycastResult>();
gr.Raycast(pointerEventData,results);
if (results.Count!=0)
{
if (results[0].gameObject.name.Contains(cheackName))
{
uGuiGo = results[0].gameObject;
uGuiGoPos = uGuiGo.transform.localPosition;
Debug.Log("找到了");
}
else
{
Debug.Log("没有找到");
}
}
}
private void Get_OnClickUpToObj(Action<bool> callBack)
{
pointerEventData.position = Input.mousePosition;
if (gr==null) { gr =m_Canvas.GetComponent<GraphicRaycaster>(); }
List<RaycastResult> results = new List<RaycastResult>();
gr.Raycast(pointerEventData,results);
clickUpOverList.Clear();
if (results.Count!=0)
{
for (int i = 0; i < results.Count; i++)
{
clickUpOverList.Add(results[i].gameObject);
}
}
if (callBack!=null)
{
if (clickUpOverList.Count<=1)
{
callBack(true);//复位
}else if (clickUpOverList.Count>=2)
{
if (clickUpOverList[1].name.Contains(cheackUp_ObjName))//是箱子
{
callBack(false);
}
else
{
callBack(true);//复位
}
}
}
}
private void Get_OnClickUpToObj()
{
pointerEventData.position = Input.mousePosition;
if (gr==null) { gr =m_Canvas.GetComponent<GraphicRaycaster>(); }
List<RaycastResult> results = new List<RaycastResult>();
gr.Raycast(pointerEventData,results);
clickUpOverList.Clear();
if (results.Count!=0)
{
for (int i = 0; i < results.Count; i++)
{
clickUpOverList.Add(results[i].gameObject);
}
}
if (clickUpOverList.Count <= 1)
{
if (uGuiGo!=null)
{
uGuiGo.transform.localPosition = uGuiGoPos; //复位
}
}
else if (clickUpOverList.Count >= 2)//检测 底部触碰到的是什么
{
//是箱子的子类0
if (clickUpOverList[1].name.Contains(cheackUp_Child0))
{
if (clickUpOverList[0].name=="img_ItemVge1")
{
uGuiGo.name = "NotMove";
Transform tempTf = GameObject.Find("child0").transform.parent.Find("obj");
uGuiGo.transform.SetParent(tempTf);
uGuiGo.transform.localPosition=Vector3.zero;
tempTf.SetParent(Evn.tf);
ChanguageSiblingIndex(tempTf);
winCount++;
if (winCount >= winCount_CZ)
{
//处理游戏胜利相关的
Set_ToWin();
}
}
else
{
if (uGuiGo!=null)
{
uGuiGo.transform.localPosition = uGuiGoPos; //复位
}
}
} //是箱子的子类1
else if (clickUpOverList[1].name.Contains(cheackUp_Child1))
{
if (clickUpOverList[0].name == "img_ItemVge3")
{
uGuiGo.name = "NotMove";
Transform tempTf = GameObject.Find("child1").transform.parent.Find("obj");
uGuiGo.transform.SetParent(tempTf);
uGuiGo.transform.localPosition=Vector3.zero;
tempTf.SetParent(Evn.tf);
ChanguageSiblingIndex(tempTf);
winCount++;
if (winCount >= winCount_CZ)
{
//处理游戏胜利相关的
Set_ToWin();
}
}
else
{
if (uGuiGo!=null)
{
uGuiGo.transform.localPosition = uGuiGoPos; //复位
}
}
} //是箱子的子类2
else if (clickUpOverList[1].name.Contains(cheackUp_Child2))
{
if (clickUpOverList[0].name == "img_ItemVge0")
{
uGuiGo.name = "NotMove";
Transform tempTf = GameObject.Find("child2").transform.parent.Find("obj");
uGuiGo.transform.SetParent(tempTf);
uGuiGo.transform.localPosition=Vector3.zero;
tempTf.SetParent(Evn.tf);
ChanguageSiblingIndex(tempTf);
winCount++;
if (winCount >= winCount_CZ)
{
//处理游戏胜利相关的
Set_ToWin();
}
}
else
{
if (uGuiGo!=null)
{
uGuiGo.transform.localPosition = uGuiGoPos; //复位
}
}
}
else
{
if (uGuiGo!=null)
{
uGuiGo.transform.localPosition = uGuiGoPos; //复位
}
}
}
uGuiGo = null;
}
Unity骚操作: 获取光标(鼠标)底下 Canvas的子类UI
于 2021-03-11 13:29:57 首次发布