unity3d---物体加点击事件

目录

1.给需要点击点物体加collider

2.层级面板加EventSystem

3. 相机加Physics Raycaster

4.物体单独响应点击事件

5.控制脚本实现各物体的点击事件

6.点击ui时屏蔽 物体点击事件



1.给需要点击点物体加collider

 

2.层级面板加EventSystem

 

3. 相机加Physics Raycaster

2d 3d按需添加

 

4.物体单独响应点击事件

新建单独脚本挂在响应点击的物体上

public class ClickObj : MonoBehaviour, IPointerClickHandler
{
    public void OnPointerClick(PointerEventData event)
    {
        Debug.LogError("我被点了");
    }
}

5.控制脚本实现各物体的点击事件

private void Update()
    {
        if (subCamera[0].activeSelf)
        {
            if (Input.GetMouseButtonDown(0))
            {
                ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                if (Physics.Raycast(ray, out hit))
                {
                    obj = hit.collider.gameObject;
                    //根据物体名 进行下一步操作
                    switch (obj.name)
                    {
                        case "add_dp": 
                            Debug.LogError("aaa");
                            break;
                        case "add_ck":
                            break;
                        case "add_jxb":
                            break;
                        case "add_lt":
                            break;
                        case "add_cm":
                            break;
                        case "add_kqf":
                            break;
                    }
                }
            }
        }
        else if (subCamera[1].activeSelf)
        {
            if (Input.GetMouseButtonDown(0))
            {
                ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                if (Physics.Raycast(ray, out hit))
                {
                    obj = hit.collider.gameObject;
                    //根据物体tag 进行下一步操作
                    switch (obj.tag)
                    {
                        case "aaa":
                            Debug.LogError("aaa");
                            break;
                        case "bbb":
                            Debug.LogError("bbb");
                            break;
                    }
                }
            }
        }
    }

6.点击ui时屏蔽 物体点击事件

if (Input.touchCount == 1)
        {
            if (EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId)) { return; }
        }
        else
        {
            if (EventSystem.current.IsPointerOverGameObject()) { return; }
        }

猜你喜欢

转载自blog.csdn.net/lalate/article/details/130342110
今日推荐