我正在为我的游戏开发UI。我从简单的播放按钮开始。
当它被触摸时,游戏将开始,但如果用户触摸播放按钮并在播放按钮外释放触摸,则不会发生任何事情。
如何实施此类行动。我尝试使用以下代码,但是OnMouseUp中的语句永远不会执行。
if(Input.GetMouseButtonDown(0)) {
hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
if(hit) {
if(transform.name == hit.transform.gameObject.name) {
Debug.Log("Button touched");
}
}
}else
if(Input.GetMouseButtonUp(0)) {
//hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
if(hit) {
if(transform.name == hit.transform.gameObject.name) {
Debug.Log ("touched up over same button.");
}else {
Debug.Log ("touched up not over same button.");
}
}
}
是否只有当MouseDown被触发时,该按钮上的MouseUp将始终被触发,除非其他游戏对象的其他对撞机被触摸?
在团结论坛中,我被建议在此帖子Mouse released outside is not possible?
上使用UI元素但是如果我们想对游戏对象应用相同的行为那么呢?
答案 0 :(得分:1)
如果我理解正确,您正在寻找一种方法,不仅可以检测鼠标按钮何时通过GameObject释放,还可以在任何未通过GameObject的地方发布鼠标按钮。您不必将碰撞器添加到场景中的其他所有内容来检测它。
在你的第二个if
区块中,你正在登录射线命中的东西,而它击中的东西不是有问题的GameObject。还有一种情况是光线没有任何影响:
if(Input.GetMouseButtonUp(0)) {
hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
if(hit && transform.name == hit.transform.gameObject.name) {
Debug.Log ("touched up over same button.");
} else {
Debug.Log ("touched up not over same button.");
}
}