Unity基于EventSystem让SpriteRenderer支持点击事件

若2D场景中使用了UGUI的UI系统,则默认是有EventSystem的。否则可以创建个UGUI的物体,然后保留EventSystem,删除其它不需要的。

场景主相机添加Physics2DRaycaster组件,并妥善设置其EventMask属性。

为SpriteRenderer物体添加诸如BoxCollider2D等碰撞体组件,否则其接受不到射线检测。

下面扩展一个SpriteRendererButton组件,并添加到SpriteRenderer物体上:

csharp 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;


public class SpriteRendererButtonClickEvent : UnityEvent
{
}

public class SpriteRendererButton : MonoBehaviour, IPointerClickHandler
{
    public bool enable = true;
    public SpriteRendererButtonClickEvent onClick = new SpriteRendererButtonClickEvent();

    public void OnPointerClick(PointerEventData eventData)
    {
        if (enable)
        {
            onClick?.Invoke();
        }
    }
}

后面的用法就和传统Button一样了!

同理3D项目中物体也可以使用类似的方式,使得3D物体可以使用我们熟悉的类似UGUI的点击事件。

相关推荐
KillJUMP35 分钟前
GODOT SHADER关键函数
游戏引擎·godot
Oiiouui4 小时前
Godot(4.x): Python处理转换Excel为注入Json
游戏引擎·godot
追光者♂6 小时前
【测评系列3】CSDN AI数字营销实测体验官:测试 开源项目——Superpowers 游戏引擎从零开发实战指南
人工智能·深度学习·机器学习·typescript·开源·游戏引擎·superpowers
小拉达不是臭老鼠6 小时前
Unity数据持久化_Json
学习·unity
heimeiyingwang6 小时前
【架构实战】订单系统架构设计:电商核心系统的演进
unity·架构·系统架构
元气少女小圆丶7 小时前
SenseGlove Nova 2+Unity开发笔记3
笔记·unity·游戏引擎
Oiiouui7 小时前
Godot(4.x): 游戏管理器: Excel 动态依赖注入实现
游戏·游戏引擎·godot
WMX10127 小时前
Unity-shader学习记录
学习·unity·游戏引擎
WMX10127 小时前
Hololens 2 上部署 Unity+MRTK 项目_模型着色
unity·游戏引擎·hololens
游乐码7 小时前
unity基础(八)协程
游戏·unity·c#·游戏引擎