主要实现脚本ClickListener
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class ClickListener : MonoBehaviour, IPointerClickHandler
{
public delegate GameObject AddListener(GameObject go);//声明一个构造参数为GameObject,返回值为GameObject的委托类型
public AddListener OnClick;
public static ClickListener Get(GameObject go)//在构造函数中检测物体是否挂载这个脚本组件,以及是否有BOX
{
ClickListener lisner;
if (go.GetComponent<ClickListener>() == null)
lisner = go.AddComponent<ClickListener>();
lisner = go.GetComponent<ClickListener>();
if (go.GetComponent<BoxCollider>() == null)
{
go.AddComponent<BoxCollider>();
}
return lisner;
}
void IPointerClickHandler.OnPointerClick(PointerEventData eventData)//继承自UnityEventSystem的点击方法,当点击调用时,执行对应GameObject的委托
{
if (OnClick != null)
{
Debug.Log(gameObject.name);
OnClick(gameObject);
}
}
}
实际使用方法
ClickListener.Get(gameObject).OnClick = Test;
void Test(GameObject obj)
{
Debug.Log("gameStart");
}
这样就可以比较简单的实现UI,3D物体,PC,手机等多平台的点击事件的调用