EventSystem是Unity UGUI中的一个重要组件,用于处理用户输入事件,如点击、拖拽、滚动等。它负责将用户输入事件传递给合适的UI元素,并触发相应的事件回调函数。
EventSystem组件通过射线检测来确定用户输入事件发生的位置,并将事件传递给最合适的UI元素。它会根据UI元素的层级关系和射线检测结果来确定事件的目标对象。
firstSelectedGameObject
:设置默认选中的UI元素。
sendNavigationEvents
:是否发送导航事件。
pixelDragThreshold
:拖拽事件的像素阈值。
currentInputModule
:当前使用的输入模块。
SetSelectedGameObject(GameObject selected)
:设置当前选中的UI元素。
RaycastAll(PointerEventData eventData, List<RaycastResult> resultAppendList)
:执行射线检测,并将结果保存到指定的列表中。
UpdateModules()
:更新输入模块。
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class DefaultButton : MonoBehaviour
{
public Button defaultButton;
void Start()
{
EventSystem.current.SetSelectedGameObject(defaultButton.gameObject);
}
}
操作步骤:
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class ButtonClick : MonoBehaviour, IPointerClickHandler
{
public void OnPointerClick(PointerEventData eventData)
{
Debug.Log("Button clicked!");
}
}
操作步骤:
OnPointerClick
函数,并在函数中添加需要执行的代码。using UnityEngine;
using UnityEngine.EventSystems;
public class DragObject : MonoBehaviour, IDragHandler
{
public void OnDrag(PointerEventData eventData)
{
transform.position = eventData.position;
}
}
操作步骤:
OnDrag
函数,并在函数中修改物体的位置。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;
}
}
操作步骤:
OnScroll
函数,并在函数中修改滚动列表的位置。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);
}
}
操作步骤:
OnSelect
函数,并在函数中设置下一个选中的按钮。EventSystem组件只能存在一个,多个EventSystem会导致输入事件无法正常处理。
EventSystem组件需要与其他UI组件配合使用,如Button、ScrollRect等。
Unity官方文档:EventSystem
Unity官方教程:UI Event System
手机扫一扫
移动阅读更方便
你可能感兴趣的文章