Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Linq;
- using UnityEditor;
- using UnityEngine;
- using UnityEngine.EventSystems;
- using UnityEngine.SceneManagement;
- using UnityEngine.UI;
- /// <summary>
- /// エディタ上でのアプリ起動時に自動実行されるデバッグ用スクリプト
- /// VRアプリ向けになっているEventSystemをEditor上からも操作できる形に組み替える
- /// </summary>
- public class ReplaceEventSystems
- {
- const float InitialHeight = 1.6f;
- [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)]
- static void Init()
- {
- Replace();
- SceneManager.sceneLoaded += OnSceneLoaded;
- }
- static void OnSceneLoaded(Scene scene, LoadSceneMode mode)
- {
- Replace();
- }
- static void Replace()
- {
- // VR用シーンでなさそうならreturn
- if (GameObject.FindObjectOfType<OVRCameraRig>() == null) { return; }
- // カメラ位置の調整
- var ovrManager = GameObject.FindObjectOfType<OVRManager>();
- if (ovrManager != null && ovrManager.trackingOriginType == OVRManager.TrackingOrigin.FloorLevel)
- {
- Camera.main.transform.position = Camera.main.transform.position + Vector3.up * InitialHeight;
- }
- // カメラにキーボード操作用コンポーネントを追加(必要なければ消してください)
- Camera.main.gameObject.AddComponent<EditorCamera>();
- // OVRInputModuleを無効 かつ StandaloneInputModuleを有効に
- var eventSystem = GameObject.FindObjectOfType<EventSystem>();
- eventSystem.GetComponent<OVRInputModule>().enabled = false;
- eventSystem.gameObject.AddComponent<StandaloneInputModule>();
- // Project中の全Canvasコンポーネントの中からAssets以下でないもの(=Hierarchy上のもの)を全て習得
- var canvases = Resources.FindObjectsOfTypeAll<Canvas>()
- .Where(c => AssetDatabase.GetAssetOrScenePath(c).Contains(".unity")).ToArray();
- // GraphicRaycasterがあれば有効に、なければ追加
- // OVRRaycasterは競合しないので特にdisableにしていない
- foreach (var canvas in canvases)
- {
- var raycaster = canvas.gameObject.GetComponent<GraphicRaycaster>();
- if (raycaster != null && raycaster.GetType() == typeof(GraphicRaycaster))
- {
- raycaster.enabled = true;
- }
- else
- {
- canvas.gameObject.AddComponent<GraphicRaycaster>();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement