using System.Collections; using System.Collections.Generic; using UnityEngine; public class ModeSelectScene : MonoBehaviour { RectTransform rect; [SerializeField] GameObject InitCanvas; //[SerializeField] GameObject infoText; [SerializeField] GameObject configCanvas; // Use this for initialization void Start () { configCanvas.SetActive(false); } // Update is called once per frame void Update () { } enum DisplayMode{ Left, Right }; //説明画面のボタンが押されたらButtonEventより呼び出される public void pushInfoButton() { //StartCoroutine(displayRectObj(infoText, DisplayMode.Left)); } //設定ボタンが押されたらButtonEventより呼び出される public void pushConfigButton() { StartCoroutine(displayRectObj(configCanvas, DisplayMode.Right)); } public void pushConfigBackButton() { configCanvas.SetActive(false); InitCanvas.SetActive(true); //StartCoroutine(BackRectObj(configCanvas, DisplayMode.Left)); } //画面脇からスライドして中央へ IEnumerator displayRectObj(GameObject obj, DisplayMode mode) { InitCanvas.SetActive(false); rect = obj.GetComponent(); float screenWidth = (float)Screen.width; if (mode == 0) { rect.position = new Vector2(-screenWidth * 2f, 0);//画面外左に配置 } else { rect.position = new Vector2(screenWidth * 2f, 0);//画面外右に配置 } obj.SetActive(true); float moveSpeed = 0.5f; float recX = rect.position.x; //正の値にしておく if (recX <= 0) { recX = recX - (recX * 2f); moveSpeed = -0.5f;//負の値にすることで右に動かすようにする } while (recX >= 0) { rect.anchoredPosition = new Vector2(rect.position.x - moveSpeed, 0); recX -= 0.5f; yield return null; } } IEnumerator BackRectObj(GameObject obj, DisplayMode mode) { rect = obj.GetComponent(); float screenWidth = (float)Screen.width; float moveSpeed = 0.5f; float recX = rect.position.x; //正の値にしておく if (mode == 0) { moveSpeed = -0.5f;//負の値にすることで右に動かすようにする } while (recX <= screenWidth * 2f) { rect.anchoredPosition = new Vector2(rect.position.x + moveSpeed, 0); recX += 0.5f; yield return null; } configCanvas.SetActive(false); InitCanvas.SetActive(true); } }