此篇博客将通过两种方式实现场景中物体的点击事件。
准备工作:
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