using UnityEngine; using UnityEngine.UI; using UnityEditor; using System.Collections; using UnityEngine.EventSystems; #pragma warning disable 0618 public static class ETCMenu{ [MenuItem ("GameObject/EasyTouch Controls/InputManager", false, 0)] static void AddInputManager(){ ETCInput.instance.Create(); } [MenuItem ("GameObject/EasyTouch Controls/Joystick", false, 0)] static void AddJoystick(){ ETCInput.instance.Create(); GameObject canvas = SetupUI(); Object[] sprites = Resources.LoadAll("ETCDefaultSprite"); GameObject joystick = new GameObject("New Joystick", typeof(ETCJoystick),typeof(RectTransform), typeof( CanvasGroup), typeof(Image) ); joystick.transform.SetParent( canvas.transform,false); joystick.GetComponent().preserveAspect = true; joystick.GetComponent().sprite = GetSpriteByName("ETCArea",sprites); joystick.GetComponent().rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal,130); joystick.GetComponent().rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical,130); joystick.GetComponent().hideFlags = HideFlags.HideInInspector; joystick.GetComponent().hideFlags = HideFlags.HideInInspector; GameObject thumb = new GameObject("Thumb",typeof(RectTransform), typeof(CanvasRenderer), typeof(Image)); thumb.transform.SetParent(joystick.transform,false); thumb.GetComponent().preserveAspect = true; thumb.GetComponent().sprite = GetSpriteByName("ETCThumb",sprites); thumb.GetComponent().rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal,80); thumb.GetComponent().rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical,80); joystick.GetComponent().thumb = thumb.transform as RectTransform; joystick.GetComponent().InitCurve(); Selection.activeGameObject = joystick; } [MenuItem ("GameObject/EasyTouch Controls/D-Pad", false, 0)] static void AddDPad(){ ETCInput.instance.Create(); GameObject canvas = SetupUI(); Object[] sprites = Resources.LoadAll("ETCDefaultSprite"); GameObject button = new GameObject("New DPad", typeof(ETCDPad),typeof(RectTransform),typeof(Image)); button.transform.SetParent( canvas.transform,false); button.GetComponent().preserveAspect = true; button.GetComponent().sprite = GetSpriteByName("ETCDPad",sprites); button.GetComponent().normalSprite = GetSpriteByName("ETCButtonNormal",sprites); button.GetComponent().normalColor = Color.white; button.GetComponent().pressedSprite = GetSpriteByName("ETCButtonPressed",sprites); button.GetComponent().pressedColor = Color.white; button.GetComponent().hideFlags = HideFlags.HideInInspector; Selection.activeGameObject = button; } [MenuItem ("GameObject/EasyTouch Controls/Button", false, 0)] static void AddButton(){ ETCInput.instance.Create(); GameObject canvas = SetupUI(); Object[] sprites = Resources.LoadAll("ETCDefaultSprite"); GameObject button = new GameObject("New Button", typeof(ETCButton),typeof(RectTransform),typeof(Image)); button.transform.SetParent( canvas.transform,false); button.GetComponent().preserveAspect = true; button.GetComponent().sprite = GetSpriteByName("ETCButtonNormal",sprites); button.GetComponent().normalSprite = GetSpriteByName("ETCButtonNormal",sprites); button.GetComponent().normalColor = Color.white; button.GetComponent().pressedSprite = GetSpriteByName("ETCButtonPressed",sprites); button.GetComponent().pressedColor = Color.white; button.GetComponent().hideFlags = HideFlags.HideInInspector; Selection.activeGameObject = button; } [MenuItem ("GameObject/EasyTouch Controls/TouchPad", false, 0)] static void AddTouchPad(){ ETCInput.instance.Create(); GameObject canvas = SetupUI(); Object[] sprites = Resources.LoadAll("ETCDefaultSprite"); GameObject touchPad = new GameObject("New TouchPad", typeof(ETCTouchPad),typeof(RectTransform),typeof(Image)); touchPad.transform.SetParent( canvas.transform,false); touchPad.GetComponent().sprite = GetSpriteByName("ETCFrame",sprites); touchPad.GetComponent().hideFlags = HideFlags.HideInInspector; Selection.activeGameObject = touchPad; } [MenuItem ("GameObject/EasyTouch Controls/Area", false, 0)] public static ETCArea AddJoystickArea(){ GameObject canvas = SetupUI(); Object[] sprites = Resources.LoadAll("ETCDefaultSprite"); GameObject area = new GameObject("Joystick area", typeof(RectTransform), typeof(ETCArea), typeof(Image)); area.GetComponent().sprite = GetSpriteByName("ETCFrame",sprites); area.GetComponent().type = Image.Type.Sliced; area.transform.SetParent( canvas.transform,false); area.transform.SetAsFirstSibling(); area.GetComponent().ApplyPreset(ETCArea.AreaPreset.BottomLeft); return area.GetComponent(); } static GameObject SetupUI(){ // Canvas GameObject canvas = GameObject.Find("EasyTouchControlsCanvas"); if (canvas == null){ canvas = AddCanvas(); } // Event system if (GameObject.FindObjectOfType(typeof(EventSystem))==null){ AddEventSystem(); } // TouchInput #if !UNITY_5_3 if ( GameObject.FindObjectOfType(typeof(TouchInputModule)) ){ TouchInputModule tm = (TouchInputModule)GameObject.FindObjectOfType(typeof(TouchInputModule)); //tm.allowActivationOnStandalone = true; tm.forceModuleActive = true; } #endif return canvas; } static void AddEventSystem(){ #if UNITY_5_3 new GameObject("EventSystem",typeof(EventSystem), typeof(StandaloneInputModule)); #else new GameObject("EventSystem",typeof(EventSystem), typeof(TouchInputModule), typeof(StandaloneInputModule)); #endif } static GameObject AddCanvas(bool isSpaceCamera=false){ GameObject canvas = new GameObject("EasyTouchControlsCanvas", typeof(RectTransform), typeof(Canvas), typeof(CanvasScaler), typeof(GraphicRaycaster)); if (isSpaceCamera){ canvas.GetComponent().renderMode = RenderMode.ScreenSpaceCamera; canvas.GetComponent().worldCamera = Camera.main; } else{ canvas.GetComponent().renderMode = RenderMode.ScreenSpaceOverlay; } canvas.GetComponent().uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; return canvas; } static Sprite GetSpriteByName(string name, Object[] sprites){ Sprite sprite = null; for (int i=0;i