# SteamVR 專案轉 Pico 平台(Unity 2019.2) * 適用平台 Unity 2019.2,使用 Pico Unity SDK(Deprecated) * [PicoXR 版本](https://hackmd.io/qUwntB_gRQi_eAl0DWYNFw?view) ## 建置環境 ### 下載並匯入 Pico SDK * 載點(Deprecated):https://developer.pico-interactive.com/sdk/index?id=4&device_id=1&platform_id=1 * Import custom package -> 剛剛載的 Pico package ### 修改環境 * 按照 Package 以及 Document 建議修改 ProjectSetting 以及 Android Manifest Document:https://developer.pico-interactive.com/document/doc **下面是 比較重要的設定 或是 Document 中沒有提到的** * Edit > PlayerSetting > Player > Other Settings > Active Input Handling 設置為 `Both` (為了讓控制器與 UI 互動) * 修改 Android SDK(如果建置時報錯:SDK 過期) 1. 安裝 Android Studio > 安裝額外的 SDK 和 建置工具  選擇需要的 SDK 版本  **SDK Tools > Hide Obsolete Packages 取消勾選**  3. Edit > Preferences > External Tools > 取消勾選 Android SDK Tools Installed with Unity 4. 選擇剛剛安裝的 SDK 位置 預設:C:\Users\[使用者名稱]\AppData\Local\Android\Sdk * 修改 Android Manifest 修改檔案 Plugins/Android/AndroidManifest.xml 把 android:requestLegacyExternalStorage="true" 移除 * 更改所有 Android 無法使用的檔案位置,改成 Application.persistentDataPath ``` Application.dataPath Application.streamingAssetsPath ``` * 以下為 [JCxYIS](https://hackmd.io/@jcxyisncu1102) 找出的幾個需要修改位置 - [LabTools.cs](https://hackmd.io/gfgRqCBySM6NNwe2mHkKuA) - [LabDataManager.cs](https://hackmd.io/IL5oEjF4RzyCH1EIObl24g) - [語音辨識 - StreamingRecognizer.cs](https://hackmd.io/@jcxyisncu1102/steamvr-to-pico/%2F4ssQxrzLQS-TqjUn3RXZ3A) ## 場景改動 ### Pico 攝影機建置 * 將 Pico 提供的攝影機 Prefab 做成一個新的 Prefab 位置:Assets\PicoMobileSDK\Pvr_UnitySDK\Prefabs * 加入 ControllerManager 為子物件 位置:Assets\PicoMobileSDK\Pvr_Controller\Prefabs * Event 子物件新增 Pvr_Input Module 部件,調整 Confirm Btn 為好用的按鈕 [Pico Neo 3 按鈕對應表](http://sdk.picovr.com/docs/sdk/en/chapter_five.html#pico-neo3-input-instructions)  * (選裝)自己新建一個名為 HeadControl 的空物件為子物件,其底下再加入 HeadSetControl 空物件,依照圖示加入以下部件並調整(此為鍵盤和其他功能有可能會需要的內容)  * (選裝)如果需要 VRIK,也要添加雙手(RHandTracker、LHandTracker)和頭(HeadTracker)的追蹤位置(皆為空物件) * 最終 Prefab  * (選裝)如果攝影機是動態生成,要調整 Prefab 的 Transform * **所有場景都加入此 Prefab**(否則實機建置悲劇) ### 修改場景 Canvas * 移除場景中 EventSystem * 所有 Canvas RenderMode 改成 WorldSpace 並調整大小和位置 * 所有 Canvas 底下加入此 Script -> [PicoCanvasAddCamera.cs](/cx1rb8haTgSKZnGk_jOCIQ) ### (選裝)VR 鍵盤 * [JCxYIS](https://hackmd.io/@jcxyisncu1102) 的方法:[使用 VR 鍵盤](https://hackmd.io/@jcxyisncu1102/steamvr-to-pico/%2FUyRsBE57Sw-JtpjEBhz_6g) ### VRIK(選裝) * 有用到 VRIK 的專案,需要客製化綁定內容,如果你的 Pico 攝影機結構調整的跟我一樣,可以直接按照這個改:[VRIKInput.cs](/YwHBfUdlTF-jMlUVN8vYPw) * 執行一次遊戲,在遊戲中調整剛剛加在 Pico 攝影機 Tracker 的方向,確定後複製 Transform 部件,貼上覆蓋 Tracker 的 Transform ## [專案建置](https://hackmd.io/@jcxyisncu1102/steamvr-to-pico/%2F7GfQHgkgS9-s3SMr2kAZGg) * 感謝 [JCxYIS](https://hackmd.io/@jcxyisncu1102) ## Android 上無法使用的類別修改 ```這些類別會導致實機上直接崩潰,不會出現任何錯誤訊息``` ### SpVoice * 功能:將字串用語音播出(遊戲中用來使 NPC 說出玩家名字) * 解法:改用 Google 的轉語音 這裡是把 `text` 這個字串轉語音,可以自行替換 ```csharp= IEnumerator TTS_Google( string text){ string url; // GameDataManager.FlowData.Language 是雙語 if( GameDataManager.FlowData.Language == Language.中文) { url = "https://translate.google.com/translate_tts?ie=UTF-8&total=1&idx=0&textlen=32&client=tw-ob&q=" + text + "&tl=Zh-gb"; } else { url = "https://translate.google.com/translate_tts?ie=UTF-8&total=1&idx=0&textlen=32&client=tw-ob&q=" + text + "&tl=En-gb"; } var www = UnityWebRequestMultimedia.GetAudioClip(url, AudioType.MPEG); yield return www.SendWebRequest(); if (www.result == UnityWebRequest.Result.ConnectionError || www.result == UnityWebRequest.Result.ProtocolError) { Debug.Log(www.error); } // 播放語音 clip = DownloadHandlerAudioClip.GetContent(www); GameAudioController.Instance.PlayOneShot(clip); // 等待播放時間 - 這一行可能要寫在外面,不然沒有等待效果 yield return new WaitForSeconds(clip.length); } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up