Unity3D物体点击事件实现方式

  • Post author:
  • Post category:其他


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

准备工作:

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



版权声明:本文为qq_21743659原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。