# Unity UGUI的EventSystem(事件系統)組件的介紹及使用 ## 1. 什麼是EventSystem組件? EventSystem是Unity UGUI中的一個重要組件,用於處理用戶輸入事件,如點擊、拖拽、滾動等。它負責將用戶輸入事件傳遞給合適的UI元素,並觸發相應的事件回調函數。 ...
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);
}
}
操作步驟:
- 創建一個空物體,並將DefaultButton腳本掛載上去。
- 在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!");
}
}
操作步驟:
- 創建一個按鈕,並將ButtonClick腳本掛載上去。
- 在ButtonClick腳本中實現
OnPointerClick
函數,併在函數中添加需要執行的代碼。
例子3:拖拽物體
using UnityEngine;
using UnityEngine.EventSystems;
public class DragObject : MonoBehaviour, IDragHandler
{
public void OnDrag(PointerEventData eventData)
{
transform.position = eventData.position;
}
}
操作步驟:
- 創建一個物體,並將DragObject腳本掛載上去。
- 在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;
}
}
操作步驟:
- 創建一個滾動列表,並將ScrollList腳本掛載上去。
- 在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);
}
}
操作步驟:
- 創建多個按鈕,並將Navigation腳本掛載上去。
- 在Navigation腳本中實現
OnSelect
函數,併在函數中設置下一個選中的按鈕。
註意事項
- EventSystem組件只能存在一個,多個EventSystem會導致輸入事件無法正常處理。
- EventSystem組件需要與其他UI組件配合使用,如Button、ScrollRect等。
參考資料
- Unity官方文檔:EventSystem
- Unity官方教程:UI Event System
__EOF__
本文作者: Blank本文鏈接:
版權聲明:本博客所有文章除特別聲明外,均採用 BY-NC-SA 許可協議。轉載請註明出處!
聲援博主:如果您覺得文章對您有幫助,可以點擊文章右下角 【 推薦】 一下。您的鼓勵是博主的最大動力!