Unity-事件系統(tǒng)
使用事件系統(tǒng)可以根據(jù)輸入(即鍵盤、鼠標(biāo)、觸摸或自定義輸入)將事件發(fā)送到應(yīng)用程序中的對(duì)象。事件系統(tǒng)包含一些共同協(xié)作以發(fā)送事件的組件。
概述
將事件系統(tǒng)組件添加到游戲?qū)ο髸r(shí),應(yīng)該會(huì)注意到該組件未公開太多功能,這是因?yàn)槭录到y(tǒng)本身設(shè)計(jì)為事件系統(tǒng)模塊之間通信的管理器和協(xié)調(diào)器。
事件系統(tǒng)的主要作用如下:
管理視為選中狀態(tài)的游戲?qū)ο?/p>
管理正在使用的輸入模塊
管理射線投射(如果需要)
根據(jù)需要更新所有輸入模塊
輸入模塊
輸入模塊包含定義事件系統(tǒng)行為方式的主要邏輯,可用于:
處理輸入
管理事件狀態(tài)
將事件發(fā)送到場(chǎng)景對(duì)象。
事件系統(tǒng)中一次只能有一個(gè)輸入模塊處于激活狀態(tài),這些輸入模塊必須是與事件系統(tǒng)組件位于同一游戲?qū)ο笊系慕M件。
如果希望編寫自定義輸入模塊,建議發(fā)送 Unity 中現(xiàn)有 UI 組件支持的事件,但是也可以擴(kuò)展事件和編寫自定義的事件(詳見消息系統(tǒng)文檔)。
射線投射器
射線投射器用于確定指針在哪個(gè)對(duì)象上方。輸入模塊通常使用場(chǎng)景中配置的射線投射器來(lái)計(jì)算指針設(shè)備位于哪個(gè)對(duì)象上方。
默認(rèn)情況下提供了 3 種射線投射器:
圖形射線投射器 (Graphic Raycaster) - 用于 UI 元素
2D 物理射線投射器 (Physics 2D Raycaster) - 用于 2D 物理元素
物理射線投射器 (Physics Raycaster) - 用于 3D 物理元素
如果在場(chǎng)景中配置了 2D/3D 射線投射器,很容易讓非 UI 元素接收來(lái)自輸入模塊的消息。只需附加一個(gè)腳本來(lái)實(shí)現(xiàn)其中一個(gè)事件接口即可。