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

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

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

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

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

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的点击事件。

相关推荐

  1. Unity基于EventSystemSpriteRenderer支持事件

    2024-06-13 10:46:03       40 阅读
  2. unity防止ui事件被子物体拦截

    2024-06-13 10:46:03       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-13 10:46:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-13 10:46:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-13 10:46:03       87 阅读
  4. Python语言-面向对象

    2024-06-13 10:46:03       96 阅读

热门阅读

  1. 【算法——动态规划(从dfs回溯开始推导dp)】

    2024-06-13 10:46:03       34 阅读
  2. np.arctan2和np.arctan

    2024-06-13 10:46:03       27 阅读
  3. 处理docker的镜像下载问题

    2024-06-13 10:46:03       36 阅读
  4. win11安装pycuda的一点点问题

    2024-06-13 10:46:03       35 阅读
  5. d3.js获取流程图不同的节点

    2024-06-13 10:46:03       32 阅读
  6. 在 macOS 上安装 Docker

    2024-06-13 10:46:03       31 阅读
  7. L1-022 奇偶分家

    2024-06-13 10:46:03       28 阅读