198 lines
6.5 KiB
C#
198 lines
6.5 KiB
C#
|
|
using UnityEngine;
|
||
|
|
using UnityEngine.UI;
|
||
|
|
using UnityEditor;
|
||
|
|
using System.Collections;
|
||
|
|
using UnityEngine.EventSystems;
|
||
|
|
|
||
|
|
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<Image>().preserveAspect = true;
|
||
|
|
joystick.GetComponent<Image>().sprite = GetSpriteByName("ETCArea",sprites);
|
||
|
|
joystick.GetComponent<Image>().rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal,130);
|
||
|
|
joystick.GetComponent<Image>().rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical,130);
|
||
|
|
joystick.GetComponent<CanvasGroup>().hideFlags = HideFlags.HideInInspector;
|
||
|
|
joystick.GetComponent<CanvasRenderer>().hideFlags = HideFlags.HideInInspector;
|
||
|
|
|
||
|
|
|
||
|
|
GameObject thumb = new GameObject("Thumb",typeof(RectTransform), typeof(CanvasRenderer), typeof(Image));
|
||
|
|
thumb.transform.SetParent(joystick.transform,false);
|
||
|
|
thumb.GetComponent<Image>().preserveAspect = true;
|
||
|
|
thumb.GetComponent<Image>().sprite = GetSpriteByName("ETCThumb",sprites);
|
||
|
|
thumb.GetComponent<Image>().rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal,80);
|
||
|
|
thumb.GetComponent<Image>().rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical,80);
|
||
|
|
|
||
|
|
joystick.GetComponent<ETCJoystick>().thumb = thumb.transform as RectTransform;
|
||
|
|
|
||
|
|
joystick.GetComponent<ETCJoystick>().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<Image>().preserveAspect = true;
|
||
|
|
button.GetComponent<Image>().sprite = GetSpriteByName("ETCDPad",sprites);
|
||
|
|
|
||
|
|
button.GetComponent<ETCDPad>().normalSprite = GetSpriteByName("ETCButtonNormal",sprites);
|
||
|
|
button.GetComponent<ETCDPad>().normalColor = Color.white;
|
||
|
|
button.GetComponent<ETCDPad>().pressedSprite = GetSpriteByName("ETCButtonPressed",sprites);
|
||
|
|
button.GetComponent<ETCDPad>().pressedColor = Color.white;
|
||
|
|
|
||
|
|
button.GetComponent<CanvasRenderer>().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<Image>().preserveAspect = true;
|
||
|
|
button.GetComponent<Image>().sprite = GetSpriteByName("ETCButtonNormal",sprites);
|
||
|
|
|
||
|
|
button.GetComponent<ETCButton>().normalSprite = GetSpriteByName("ETCButtonNormal",sprites);
|
||
|
|
button.GetComponent<ETCButton>().normalColor = Color.white;
|
||
|
|
button.GetComponent<ETCButton>().pressedSprite = GetSpriteByName("ETCButtonPressed",sprites);
|
||
|
|
button.GetComponent<ETCButton>().pressedColor = Color.white;
|
||
|
|
|
||
|
|
button.GetComponent<CanvasRenderer>().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<Image>().sprite = GetSpriteByName("ETCFrame",sprites);
|
||
|
|
|
||
|
|
touchPad.GetComponent<CanvasRenderer>().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<Image>().sprite = GetSpriteByName("ETCFrame",sprites);
|
||
|
|
area.GetComponent<Image>().type = Image.Type.Sliced;
|
||
|
|
area.transform.SetParent( canvas.transform,false);
|
||
|
|
|
||
|
|
area.transform.SetAsFirstSibling();
|
||
|
|
|
||
|
|
area.GetComponent<ETCArea>().ApplyPreset(ETCArea.AreaPreset.BottomLeft);
|
||
|
|
return area.GetComponent<ETCArea>();
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
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<Canvas>().renderMode = RenderMode.ScreenSpaceCamera;
|
||
|
|
canvas.GetComponent<Canvas>().worldCamera = Camera.main;
|
||
|
|
}
|
||
|
|
else{
|
||
|
|
canvas.GetComponent<Canvas>().renderMode = RenderMode.ScreenSpaceOverlay;
|
||
|
|
}
|
||
|
|
|
||
|
|
canvas.GetComponent<CanvasScaler>().uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize;
|
||
|
|
|
||
|
|
return canvas;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
static Sprite GetSpriteByName(string name, Object[] sprites){
|
||
|
|
|
||
|
|
Sprite sprite = null;
|
||
|
|
for (int i=0;i<sprites.Length;i++){
|
||
|
|
if (sprites[i].name == name){
|
||
|
|
sprite = (Sprite)sprites[i];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return sprite;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|