Unity3D物体点击事件实现方式

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

准备工作:

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

Unity3D物体点击事件实现方式_第1张图片

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

Unity3D物体点击事件实现方式_第2张图片

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

Unity3D物体点击事件实现方式_第3张图片

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

方式一:实现接口IPointerClickHandler

1、给需要点击的物体添加自己编写的脚本"TestClick.cs"

Unity3D物体点击事件实现方式_第4张图片

脚本代码如下:

public class TestClick : MonoBehaviour, IPointerClickHandler
{
    private string TAG = "TestClick_";

    public void OnPointerClick(PointerEventData eventData)
    {
        Debug.Log(TAG + "Click Cube ");

    }
}

 方式二:通过物体的名字或者Tag

1、添加一个单独层挂载编写的脚本“ClickRayCastHitControl.cs”

Unity3D物体点击事件实现方式_第5张图片      Unity3D物体点击事件实现方式_第6张图片

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

Unity3D物体点击事件实现方式_第7张图片

创建tag:

Unity3D物体点击事件实现方式_第8张图片Unity3D物体点击事件实现方式_第9张图片

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

Unity3D物体点击事件实现方式_第10张图片

 

你可能感兴趣的:(Unity,unity)