Unity3D物体点击事件实现方式

此篇博客将通过两种方式实现场景中物体的点击事件。

准备工作:
1、给场景添加EventSystem:选择Hierarchy窗口-》Create-》UI-》Event System

2、给摄像机添加Physics Raycaster脚本(系统自带的):选中Main Camera-》Add Component-》Physics Raycaster

3、给需要实现点击的物体添加Collider(Cube默认有Collider就不需要此步骤,如果是公司模型没有就需要添加)。

点击事件的准备工作到此结束,接下通过两种方式实现点击事件

方式一:实现接口IPointerClickHandler
1、给需要点击的物体添加自己编写的脚本"TestClick.cs"

脚本代码如下:

public class TestClick : MonoBehaviour, IPointerClickHandler
{
    private string TAG = "TestClick_";
 
    public void OnPointerClick(PointerEventData eventData)
    {
        Debug.Log(TAG + "Click Cube ");
 
    }
}
 方式二:通过物体的名字或者Tag
1、添加一个单独层挂载编写的脚本“ClickRayCastHitControl.cs”

      

ClickRayCastHitControl脚本代码如下:

using UnityEngine;
 
public class ClickRayCastHitControl : MonoBehaviour
{
    private string TAG = "ClickRayCastHitControl_";
    Ray ray;
    RaycastHit hit;
    GameObject obj;
 
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Debug.Log(TAG+"点击鼠标左键");
            ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out hit))
            {
                Debug.Log(hit.collider.gameObject.name);
                obj = hit.collider.gameObject;
                Debug.Log(TAG+"点中: name = " + obj.name+ "点中: tag = " + obj.tag);
                //通过名字
                if (obj.name.Equals("Cube"))
                {
                    Debug.Log("点中" + obj.name);
                }
                //通过标签
                if (obj.tag == "CubeRed")
                {
                    Debug.Log("点中" + obj.name);
                }
            }
        }
    }
}

2、给物体添加tag,选中物体Cube点击Inspector中Tag选项,在下拉列表中选择所需要的tag,如果没有则点击“Add Tag..."创建一个新的tag

创建tag:

3、保存项目后运行,并在场景中用鼠标随意点击:


————————————————
版权声明:本文为CSDN博主「NeverGiveUp!!」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/YeYaLing123/article/details/114385359

猜你喜欢

转载自blog.csdn.net/qq_21743659/article/details/130151754