Hololens API解析Input-GestureRecognizer
名稱空間UnityEngine.VR.WSA.Input
使用API來識別使用者動作的管理類。
GestureRecognizer
Hololens手勢識別,完成點選,拖拽等操作。
建構函式
GestureRecognizer
建立一個手勢識別器。
公共函式
CancelGestures
取消任何掛起的手勢事件。此外,這將呼叫StopCapturingGestures。
Dispose
釋放手勢識別器所使用的資源。
GetRecognizableGestures
獲取當前啟用的手勢的一個mask。
IsCapturingGestures
用於查詢手勢是否正在接收手勢事件。
SetRecognizableGestures
將可識別的手勢設定為newMaskValues中指定的,並返回舊的設定。
StartCapturingGestures
開始接收手勢事件。在呼叫此方法之前,不會收到任何事件。
StopCapturingGestures
停止接收手勢事件。
事件
GestureErrorEvent
當手勢識別器發出警告或錯誤時,就會被觸發。
HoldCanceledEvent
當使用者使用他們的手或語言進行取消事件時,就會被觸發。
HoldCompletedEvent
當使用者完成一個手勢時,就會被觸發。
HoldStartedEvent
當使用者開始持有手勢時,就會被觸發。
ManipulationCanceledEvent
當操作手勢被取消時,就會被觸發。
ManipulationCompletedEvent
當操作手勢被完成時,就會被觸發。
ManipulationStartedEvent
當互動成為一個操作手勢時,就會被觸發。
ManipulationUpdatedEvent
當操作手勢因手移動而更新時,就會被觸發。
NavigationCanceledEvent
當導航手勢取消時,就會被觸發。
NavigationCompletedEvent
當導航手勢完成時,就會被觸發。
NavigationStartedEvent
當導航手勢開始時,就會被觸發。
NavigationUpdatedEvent
當導航手勢更新時,就會被觸發。
RecognitionEndedEvent
當操作手勢因手移動而更新時,就會被觸發。
RecognitionStartedEvent
當手勢識別完成時,或者手勢完成或取消時,就會被觸發。
TappedEvent
當出現點選手勢時,就會被觸發。
委託
GestureErrorDelegate
回撥錶示出現錯誤或警告
HoldCanceledEventDelegate
回撥錶示一個Hold取消事件。
HoldCompletedEventDelegate
回撥錶示一個Hold完成事件。
HoldStartedEventDelegate
回撥錶示一個Hold開始事件。
ManipulationCanceledEventDelegate
回撥錶示一個操作取消事件。
ManipulationCompletedEventDelegate
回撥錶示一個操作完成事件。
ManipulationStartedEventDelegate
回撥錶示一個操作開始事件。
ManipulationUpdatedEventDelegate
回撥錶示一個操作更新事件。
NavigationCanceledEventDelegate
回撥錶示一個導航取消事件。
NavigationCompletedEventDelegate
回撥錶示一個導航完成事件。
NavigationStartedEventDelegate
回撥錶示一個導航開始事件。
NavigationUpdatedEventDelegate
回撥錶示一個導航更新事件。
RecognitionEndedEventDelegate
回撥錶示手勢事件已經完成。
RecognitionStartedEventDelegate
回撥錶示手勢事件已經開始。
TappedEventDelegate
回撥指示一個點選事件。
下面的程式碼完成GestureRecognizer的初始化設定及事件的註冊和登出
using UnityEngine.VR.WSA.Input;
public class GesturesInput: MonoBehaviour{
//手勢識別管理器,手勢和導航不相容,各自需要一個
GestureRecognizer gestureRecognizer;
GestureRecognizer navigationGestureRecognizer;
//第一個是讓識別器立即啟動。第二個允許識別器在稍後的時候手動啟動。
public enum RecognizerStartBehavior { AutoStart, ManualStart };
void Start()
{
gestureRecognizer = new GestureRecognizer();
//註冊手勢事件
gestureRecognizer.TappedEvent += OnTappedEvent;
gestureRecognizer.HoldStartedEvent += OnHoldStartedEvent;
gestureRecognizer.HoldCompletedEvent += OnHoldCompletedEvent;
gestureRecognizer.HoldCanceledEvent += OnHoldCanceledEvent;
//註冊操作開始事件
gestureRecognizer.ManipulationStartedEvent += OnManipulationStartedEvent;
gestureRecognizer.ManipulationUpdatedEvent += OnManipulationUpdatedEvent;
gestureRecognizer.ManipulationCompletedEvent += OnManipulationCompletedEvent;
gestureRecognizer.ManipulationCanceledEvent += OnManipulationCanceledEvent;
//設定可識別的手勢
gestureRecognizer.SetRecognizableGestures(GestureSettings.Tap |
GestureSettings.ManipulationTranslate |
GestureSettings.Hold);
navigationGestureRecognizer = new GestureRecognizer();
//註冊導航事件
navigationGestureRecognizer.NavigationStartedEvent += OnNavigationStartedEvent;
navigationGestureRecognizer.NavigationUpdatedEvent += OnNavigationUpdatedEvent;
navigationGestureRecognizer.NavigationCompletedEvent += OnNavigationCompletedEvent;
navigationGestureRecognizer.NavigationCanceledEvent += OnNavigationCanceledEvent;
if (UseRailsNavigation)//使用Rails導航
{
navigationGestureRecognizer.SetRecognizableGestures(GestureSettings.NavigationRailsX |
GestureSettings.NavigationRailsY |
GestureSettings.NavigationRailsZ);
}
else//使用3D導航
{
navigationGestureRecognizer.SetRecognizableGestures(GestureSettings.NavigationX |
GestureSettings.NavigationY |
GestureSettings.NavigationZ);
}
if (RecognizerStart == RecognizerStartBehavior.AutoStart)
{
//開始捕捉操和導航手勢
gestureRecognizer.StartCapturingGestures();
navigationGestureRecognizer.StartCapturingGestures();
}
}
void OnDestroy()
{
//關閉手勢捕捉
StopGestureRecognizer();
//登出事件,釋放資源
if (gestureRecognizer != null)
{
gestureRecognizer.TappedEvent -= OnTappedEvent;
gestureRecognizer.HoldStartedEvent -= OnHoldStartedEvent;
gestureRecognizer.HoldCompletedEvent -= OnHoldCompletedEvent;
gestureRecognizer.HoldCanceledEvent -= OnHoldCanceledEvent;
gestureRecognizer.ManipulationStartedEvent -= OnManipulationStartedEvent;
gestureRecognizer.ManipulationUpdatedEvent -= OnManipulationUpdatedEvent;
gestureRecognizer.ManipulationCompletedEvent -= OnManipulationCompletedEvent;
gestureRecognizer.ManipulationCanceledEvent -= OnManipulationCanceledEvent;
gestureRecognizer.Dispose();
}
if (navigationGestureRecognizer != null)
{
navigationGestureRecognizer.NavigationStartedEvent -= OnNavigationStartedEvent;
navigationGestureRecognizer.NavigationUpdatedEvent -= OnNavigationUpdatedEvent;
navigationGestureRecognizer.NavigationCompletedEvent -= OnNavigationCompletedEvent;
navigationGestureRecognizer.NavigationCanceledEvent -= OnNavigationCanceledEvent;
navigationGestureRecognizer.Dispose();
}
}
void OnDisable()
{
StopGestureRecognizer();
}
void OnEnable()
{
if (RecognizerStart == RecognizerStartBehavior.AutoStart)
{
StartGestureRecognizer();
}
}
// 開始手勢識別(在沒有捕捉的狀態下)
public void StartGestureRecognizer()
{
if (gestureRecognizer != null && !gestureRecognizer.IsCapturingGestures())
{
gestureRecognizer.StartCapturingGestures();
}
if (navigationGestureRecognizer != null && !navigationGestureRecognizer.IsCapturingGestures())
{
navigationGestureRecognizer.StartCapturingGestures();
}
}
//關閉手勢識別(在捕捉手勢的狀態下)
public void StopGestureRecognizer()
{
if (gestureRecognizer != null && gestureRecognizer.IsCapturingGestures())
{
gestureRecognizer.StopCapturingGestures();
}
if (navigationGestureRecognizer != null && navigationGestureRecognizer.IsCapturingGestures())
{
navigationGestureRecognizer.StopCapturingGestures();
}
}
}
手勢事件的回撥方法在下個章節講解,敬請關注!
相關文章
- Hololens API解析Input-InteractionManagerAPI
- DOM 常用 API 解析API
- ApiSetSchema/API集-解析API
- 快寶智慧解析API文件API
- Html5 History API解析HTMLAPI
- 微軟HoloLens開始加速 HoloLens據我們多遠?微軟
- Django REST framework API 指南(7):解析DjangoRESTFrameworkAPI
- Nuxt Kit API :路徑解析工具UXAPI
- 【高德地圖API】從零開始學高德JS API(八)——地址解析與逆地址解析地圖APIJS
- 維基百科 MediaWiki API 解析API
- Kafka Java API 之Producer原始碼解析KafkaJavaAPI原始碼
- 國家氣象局天氣 API 引數解析API
- hololens三大技術原理
- 開發者如何看待微軟的Hololens微軟
- .net 呼叫API並解析Json資料方法APIJSON
- HoloLens Device Portal功能介紹,使用瀏覽器連線Hololens觀看第一視角。dev瀏覽器
- Tungsten Fabric架構解析丨TF支援API一覽架構API
- OpenGL/OpenGL ES入門:紋理初探 - 常用API解析API
- Vue3全域性APi解析-原始碼學習VueAPI原始碼
- 支付寶-API介面解析-轉賬到銀行API
- 使用Antlr4的node api解析css3APICSSS3
- 出售九九九成新的書了~---《Unity API解析》UnityAPI
- Android API 全解析(一):interface ScrollingViewAndroidAPIView
- 用AR完虐Oculus?微軟HoloLens演示微軟
- 【Unity】HoloLens2 開發日記Unity
- Spring中AOP相關的API及原始碼解析SpringAPI原始碼
- 百度地圖JavaScript API 學習之地址解析地圖JavaScriptAPI
- 「進擊Redis」六、Redis List運用場景、API解析RedisAPI
- WIN32API:獲取螢幕的解析度Win32API
- 免費抖音短影片地址無水印解析api介面API
- 【MRTK】HoloLens 專案部署的幾種方法
- 微軟新專利:HoloLens或支援VR功能微軟VR
- 用微軟HoloLens玩Xbox One 效果太震撼微軟
- 拼多多API介面解析,實現根據ID取商品詳情API
- 速賣通API介面解析,實現獲得aliexpress商品詳情APIExpress
- 阿里巴巴商品詳情 API 的深度解析與應用阿里API
- Laravel Passport——OAuth2 API 認證系統原始碼解析(上)LaravelPassportOAuthAPI原始碼
- Laravel Passport——OAuth2 API 認證系統原始碼解析(下)LaravelPassportOAuthAPI原始碼