首页 > 其他分享 >Unity UGUI的EventSystem(事件系统)组件的介绍及使用

Unity UGUI的EventSystem(事件系统)组件的介绍及使用

时间:2023-07-25 20:23:15浏览次数:37  
标签:UnityEngine EventSystem Unity UI 组件 using UGUI public

Unity UGUI的EventSystem(事件系统)组件的介绍及使用

1. 什么是EventSystem组件?

EventSystem是Unity UGUI中的一个重要组件,用于处理用户输入事件,如点击、拖拽、滚动等。它负责将用户输入事件传递给合适的UI元素,并触发相应的事件回调函数。

2. EventSystem组件的工作原理

EventSystem组件通过射线检测来确定用户输入事件发生的位置,并将事件传递给最合适的UI元素。它会根据UI元素的层级关系和射线检测结果来确定事件的目标对象。

3. EventSystem组件的常用属性

  • firstSelectedGameObject:设置默认选中的UI元素。
  • sendNavigationEvents:是否发送导航事件。
  • pixelDragThreshold:拖拽事件的像素阈值。
  • currentInputModule:当前使用的输入模块。

4. EventSystem组件的常用函数

  • SetSelectedGameObject(GameObject selected):设置当前选中的UI元素。
  • RaycastAll(PointerEventData eventData, List<RaycastResult> resultAppendList):执行射线检测,并将结果保存到指定的列表中。
  • UpdateModules():更新输入模块。

5. 完整例子代码

例子1:设置默认选中的按钮

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class DefaultButton : MonoBehaviour
{
    public Button defaultButton;

    void Start()
    {
        EventSystem.current.SetSelectedGameObject(defaultButton.gameObject);
    }
}

操作步骤:

  1. 创建一个空物体,并将DefaultButton脚本挂载上去。
  2. 在Inspector面板中将需要默认选中的按钮赋值给defaultButton变量。

例子2:点击按钮触发事件

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class ButtonClick : MonoBehaviour, IPointerClickHandler
{
    public void OnPointerClick(PointerEventData eventData)
    {
        Debug.Log("Button clicked!");
    }
}

操作步骤:

  1. 创建一个按钮,并将ButtonClick脚本挂载上去。
  2. 在ButtonClick脚本中实现OnPointerClick函数,并在函数中添加需要执行的代码。

例子3:拖拽物体

using UnityEngine;
using UnityEngine.EventSystems;

public class DragObject : MonoBehaviour, IDragHandler
{
    public void OnDrag(PointerEventData eventData)
    {
        transform.position = eventData.position;
    }
}

操作步骤:

  1. 创建一个物体,并将DragObject脚本挂载上去。
  2. 在DragObject脚本中实现OnDrag函数,并在函数中修改物体的位置。

例子4:滚动列表

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class ScrollList : MonoBehaviour, IScrollHandler
{
    public ScrollRect scrollRect;

    public void OnScroll(PointerEventData eventData)
    {
        scrollRect.verticalNormalizedPosition += eventData.scrollDelta.y * 0.1f;
    }
}

操作步骤:

  1. 创建一个滚动列表,并将ScrollList脚本挂载上去。
  2. 在ScrollList脚本中实现OnScroll函数,并在函数中修改滚动列表的位置。

例子5:按键导航

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class Navigation : MonoBehaviour, ISelectHandler
{
    public Button nextButton;

    public void OnSelect(BaseEventData eventData)
    {
        EventSystem.current.SetSelectedGameObject(nextButton.gameObject);
    }
}

操作步骤:

  1. 创建多个按钮,并将Navigation脚本挂载上去。
  2. 在Navigation脚本中实现OnSelect函数,并在函数中设置下一个选中的按钮。

注意事项

  • EventSystem组件只能存在一个,多个EventSystem会导致输入事件无法正常处理。
  • EventSystem组件需要与其他UI组件配合使用,如Button、ScrollRect等。

参考资料

标签:UnityEngine,EventSystem,Unity,UI,组件,using,UGUI,public
From: https://www.cnblogs.com/alianblank/p/17580929.html

相关文章

  • visual studio community 2017 许可证即将过期
     打开发现通知,许可证即将过期点击后如图所示发现点击更新后根本没用,打不开其内容,看了数个文章,尝试后发现这是只需要关闭wifi(PS:比如校园网等),打开使用自己的热点进行连接即可进去加载页面然后根据提示进行简单操作即可,我使qq邮箱登录的社区版,这样微软直接给你发个qq邮箱验......
  • Unity 生成多边形最简单的方法
    按照正常的思维,先将多边形进行三角剖分,生成网格,再添加碰撞器,去实现业务逻辑多边形三角化是件麻烦事,还需要考虑多边形的凹凸性,有没有洞等其实可以反其道而行,先添加碰撞器,通过碰撞器生成mesh,代码比较简单,直接上代码usingSystem.Collections;usingSystem.Collections.Generic;......
  • Unity UGUI的EventSystem(事件系统)组件的介绍及使用
    UnityUGUI的EventSystem(事件系统)组件的介绍及使用1.什么是EventSystem组件?EventSystem是UnityUGUI中的一个重要组件,用于处理用户输入事件,如点击、拖拽、滚动等。它负责将用户输入事件传递给合适的UI元素,并触发相应的事件回调函数。2.EventSystem组件的工作原理EventSystem......
  • Unity UGUI的RawImage(原始图片)组件的介绍及使用
    UnityUGUI的RawImage(原始图片)组件的介绍及使用1.什么是RawImage组件?RawImage是UnityUGUI中的一个组件,用于显示原始图片。与Image组件不同,RawImage可以直接显示原始图片的像素数据,而不需要经过额外的处理。2.RawImage组件的工作原理RawImage组件通过将原始图片的像素数据直......
  • UnityHub AndroidSDKManager在哪
    UnityHubAndroidSDKManager在哪引言作为一名经验丰富的开发者,我很乐意教会你如何在UnityHub中找到AndroidSDKManager。在本文中,我将详细介绍整个过程,并提供每个步骤所需的代码和注释。过程概述在UnityHub中找到AndroidSDKManager可以让我们更方便地管理Android开发所需的SDK和......
  • Unity3D 使用带刚体组件的预制体配合脚本自动生成一面墙时上层墙体被弹飞
    异常效果如下图所示:预制体是一个正方体(Cube),其参数设置如下图所示:控制墙面生成的C#脚本如下所示:usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassWall:MonoBehaviour{publicTransformbrick;//Usethisf......
  • Unity3D 自定义类的数组初始化
    实现功能:1.自定义类,用于保存数据等2.初始化数组代码:publicclasstree_elem{//位置publicintx,y;//大小【相对于原始大小的比例】最后随机分配publicfloatsize;//树的类型,最后随机分配publictree_kindkind;publictree_ele......
  • Unity UGUI的RectMask2D(2D遮罩)组件的介绍及使用
    UnityUGUI的RectMask2D(2D遮罩)组件的介绍及使用1.什么是RectMask2D组件?RectMask2D是UnityUGUI中的一个组件,用于实现2D遮罩效果。它可以限制子对象在指定的矩形区域内显示,超出区域的部分将被遮罩隐藏。2.RectMask2D的工作原理RectMask2D组件通过裁剪子对象的渲染区域来实现......
  • Unity UGUI的LayoutElement(布局元素)组件的介绍及使用
    UnityUGUI的LayoutElement(布局元素)组件的介绍及使用1.什么是LayoutElement组件?LayoutElement是UnityUGUI中的一个布局元素组件,用于控制UI元素在布局中的大小和位置。它可以用于自动调整UI元素的大小,以适应不同的屏幕分辨率和布局需求。2.LayoutElement组件的工作原理Layou......
  • unity与python通信
    Unity与Python通信Unity是一款功能强大的游戏开发引擎,而Python是一种简单易学的编程语言。将这两者结合起来可以实现更多有趣的功能。本文将介绍如何在Unity中与Python进行通信,并提供代码示例。Unity端设置首先,在Unity中需要安装Python插件。可从UnityAssetStore中下载并导入"......