ETCMenu.cs 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using UnityEditor;
  4. using System.Collections;
  5. using UnityEngine.EventSystems;
  6. #pragma warning disable 0618
  7. public static class ETCMenu{
  8. [MenuItem ("GameObject/EasyTouch Controls/InputManager", false, 0)]
  9. static void AddInputManager(){
  10. ETCInput.instance.Create();
  11. }
  12. [MenuItem ("GameObject/EasyTouch Controls/Joystick", false, 0)]
  13. static void AddJoystick(){
  14. ETCInput.instance.Create();
  15. GameObject canvas = SetupUI();
  16. Object[] sprites = Resources.LoadAll("ETCDefaultSprite");
  17. GameObject joystick = new GameObject("New Joystick", typeof(ETCJoystick),typeof(RectTransform), typeof( CanvasGroup), typeof(Image) );
  18. joystick.transform.SetParent( canvas.transform,false);
  19. joystick.GetComponent<Image>().preserveAspect = true;
  20. joystick.GetComponent<Image>().sprite = GetSpriteByName("ETCArea",sprites);
  21. joystick.GetComponent<Image>().rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal,130);
  22. joystick.GetComponent<Image>().rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical,130);
  23. joystick.GetComponent<CanvasGroup>().hideFlags = HideFlags.HideInInspector;
  24. joystick.GetComponent<CanvasRenderer>().hideFlags = HideFlags.HideInInspector;
  25. GameObject thumb = new GameObject("Thumb",typeof(RectTransform), typeof(CanvasRenderer), typeof(Image));
  26. thumb.transform.SetParent(joystick.transform,false);
  27. thumb.GetComponent<Image>().preserveAspect = true;
  28. thumb.GetComponent<Image>().sprite = GetSpriteByName("ETCThumb",sprites);
  29. thumb.GetComponent<Image>().rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal,80);
  30. thumb.GetComponent<Image>().rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical,80);
  31. joystick.GetComponent<ETCJoystick>().thumb = thumb.transform as RectTransform;
  32. joystick.GetComponent<ETCJoystick>().InitCurve();
  33. Selection.activeGameObject = joystick;
  34. }
  35. [MenuItem ("GameObject/EasyTouch Controls/D-Pad", false, 0)]
  36. static void AddDPad(){
  37. ETCInput.instance.Create();
  38. GameObject canvas = SetupUI();
  39. Object[] sprites = Resources.LoadAll("ETCDefaultSprite");
  40. GameObject button = new GameObject("New DPad", typeof(ETCDPad),typeof(RectTransform),typeof(Image));
  41. button.transform.SetParent( canvas.transform,false);
  42. button.GetComponent<Image>().preserveAspect = true;
  43. button.GetComponent<Image>().sprite = GetSpriteByName("ETCDPad",sprites);
  44. button.GetComponent<ETCDPad>().normalSprite = GetSpriteByName("ETCButtonNormal",sprites);
  45. button.GetComponent<ETCDPad>().normalColor = Color.white;
  46. button.GetComponent<ETCDPad>().pressedSprite = GetSpriteByName("ETCButtonPressed",sprites);
  47. button.GetComponent<ETCDPad>().pressedColor = Color.white;
  48. button.GetComponent<CanvasRenderer>().hideFlags = HideFlags.HideInInspector;
  49. Selection.activeGameObject = button;
  50. }
  51. [MenuItem ("GameObject/EasyTouch Controls/Button", false, 0)]
  52. static void AddButton(){
  53. ETCInput.instance.Create();
  54. GameObject canvas = SetupUI();
  55. Object[] sprites = Resources.LoadAll("ETCDefaultSprite");
  56. GameObject button = new GameObject("New Button", typeof(ETCButton),typeof(RectTransform),typeof(Image));
  57. button.transform.SetParent( canvas.transform,false);
  58. button.GetComponent<Image>().preserveAspect = true;
  59. button.GetComponent<Image>().sprite = GetSpriteByName("ETCButtonNormal",sprites);
  60. button.GetComponent<ETCButton>().normalSprite = GetSpriteByName("ETCButtonNormal",sprites);
  61. button.GetComponent<ETCButton>().normalColor = Color.white;
  62. button.GetComponent<ETCButton>().pressedSprite = GetSpriteByName("ETCButtonPressed",sprites);
  63. button.GetComponent<ETCButton>().pressedColor = Color.white;
  64. button.GetComponent<CanvasRenderer>().hideFlags = HideFlags.HideInInspector;
  65. Selection.activeGameObject = button;
  66. }
  67. [MenuItem ("GameObject/EasyTouch Controls/TouchPad", false, 0)]
  68. static void AddTouchPad(){
  69. ETCInput.instance.Create();
  70. GameObject canvas = SetupUI();
  71. Object[] sprites = Resources.LoadAll("ETCDefaultSprite");
  72. GameObject touchPad = new GameObject("New TouchPad", typeof(ETCTouchPad),typeof(RectTransform),typeof(Image));
  73. touchPad.transform.SetParent( canvas.transform,false);
  74. touchPad.GetComponent<Image>().sprite = GetSpriteByName("ETCFrame",sprites);
  75. touchPad.GetComponent<CanvasRenderer>().hideFlags = HideFlags.HideInInspector;
  76. Selection.activeGameObject = touchPad;
  77. }
  78. [MenuItem ("GameObject/EasyTouch Controls/Area", false, 0)]
  79. public static ETCArea AddJoystickArea(){
  80. GameObject canvas = SetupUI();
  81. Object[] sprites = Resources.LoadAll("ETCDefaultSprite");
  82. GameObject area = new GameObject("Joystick area", typeof(RectTransform), typeof(ETCArea), typeof(Image));
  83. area.GetComponent<Image>().sprite = GetSpriteByName("ETCFrame",sprites);
  84. area.GetComponent<Image>().type = Image.Type.Sliced;
  85. area.transform.SetParent( canvas.transform,false);
  86. area.transform.SetAsFirstSibling();
  87. area.GetComponent<ETCArea>().ApplyPreset(ETCArea.AreaPreset.BottomLeft);
  88. return area.GetComponent<ETCArea>();
  89. }
  90. static GameObject SetupUI(){
  91. // Canvas
  92. GameObject canvas = GameObject.Find("EasyTouchControlsCanvas");
  93. if (canvas == null){
  94. canvas = AddCanvas();
  95. }
  96. // Event system
  97. if (GameObject.FindObjectOfType(typeof(EventSystem))==null){
  98. AddEventSystem();
  99. }
  100. // TouchInput
  101. #if !UNITY_5_3
  102. if ( GameObject.FindObjectOfType(typeof(TouchInputModule)) ){
  103. TouchInputModule tm = (TouchInputModule)GameObject.FindObjectOfType(typeof(TouchInputModule));
  104. //tm.allowActivationOnStandalone = true;
  105. tm.forceModuleActive = true;
  106. }
  107. #endif
  108. return canvas;
  109. }
  110. static void AddEventSystem(){
  111. #if UNITY_5_3
  112. new GameObject("EventSystem",typeof(EventSystem), typeof(StandaloneInputModule));
  113. #else
  114. new GameObject("EventSystem",typeof(EventSystem), typeof(TouchInputModule), typeof(StandaloneInputModule));
  115. #endif
  116. }
  117. static GameObject AddCanvas(bool isSpaceCamera=false){
  118. GameObject canvas = new GameObject("EasyTouchControlsCanvas", typeof(RectTransform), typeof(Canvas), typeof(CanvasScaler), typeof(GraphicRaycaster));
  119. if (isSpaceCamera){
  120. canvas.GetComponent<Canvas>().renderMode = RenderMode.ScreenSpaceCamera;
  121. canvas.GetComponent<Canvas>().worldCamera = Camera.main;
  122. }
  123. else{
  124. canvas.GetComponent<Canvas>().renderMode = RenderMode.ScreenSpaceOverlay;
  125. }
  126. canvas.GetComponent<CanvasScaler>().uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize;
  127. return canvas;
  128. }
  129. static Sprite GetSpriteByName(string name, Object[] sprites){
  130. Sprite sprite = null;
  131. for (int i=0;i<sprites.Length;i++){
  132. if (sprites[i].name == name){
  133. sprite = (Sprite)sprites[i];
  134. }
  135. }
  136. return sprite;
  137. }
  138. }