雖然HoloLens支持不少種輸入方式,包括藍牙鍵盤在內。可是大部分應用仍是不能判定用戶有物理鍵盤能夠輸入,因此虛擬鍵盤輸入仍是必需要提供的。html
Unity提供了一個TouchScreenKeyboard類用於在沒有物理鍵盤時接受虛擬鍵盤的輸入。app
HoloLens上 TouchScreenKeyboard 使用的就是系統虛擬鍵盤。系統鍵盤不能出如今立體視圖的頂部,因此只能建立一個2D XAML視圖來調用系統鍵盤。輸入完成返回到全息視圖後,輸入結果會當即被提交過來。操做流程以下:性能
有六種不一樣的鍵盤視圖能夠直接拿來使用:ui
HoloLens系統鍵盤只能在UWP項目導出類型爲XAML app的應用中使用。對於導出類型D3D和XAML之間你須要作些權衡(這裏主要指性能差別吧),若是你不能作出取捨的話,你可能會但願有個鍵盤輸入的其餘方案。spa
命名空間: UnityEngine3d
類型: TouchScreenKeyboardcode
首先要聲明一個鍵盤對象和一個用來保存返回結果的字符串orm
UnityEngine.TouchScreenKeyboard keyboard; public static string keyboardText = ""
當請求鍵盤輸入的事件發生後,調用任意一個你但願的鍵盤來響應用戶輸入。htm
注意:textPlaceHolder參數的標題是特定的對象
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false, false, false);
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false, false, false, "Single-line title");
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, true, false, false);
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, true, false, false, "Multi-line Title");
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false, true, false);
keyboard = TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false, true, false, "Secure Single-line Title");
在Update()循環中檢查鍵盤是否有新的輸入並存儲其內容
if (TouchScreenKeyboard.visible == false && keyboard != null) { if (keyboard.done == true) { keyboardText = keyboard.text; keyboard = null; } }
咱們知道從全息視圖切換回2D視圖進行鍵盤輸入不是理想的方案。
目前其餘的解決方案包括: