/// <summary> /// スクロールビューを入れ替える /// </summary> /// <param name="arg_view1">一つめのViewオブジェ</param> /// <param name="arg_view2">二つ目のViewオブジェ</param> private void ChangingScrollView(GameObject arg_view1, GameObject arg_view2) { //この関数が呼ばれた時のステートを取得しておく m_whenChangesState = m_state; m_isChangingScrollView = true; Vector3 pos1 = arg_view1.transform.localPosition; Vector3 pos2 = arg_view2.transform.localPosition; Hashtable hashtable1 = new Hashtable(); hashtable1.Add("position", pos2); hashtable1.Add("islocal", true); //ローカル座標に変換 hashtable1.Add("time", 1); //Tweenの時間 iTween.MoveTo(arg_view1, hashtable1); Hashtable hashtable2 = new Hashtable(); hashtable2.Add("position", pos1); hashtable2.Add("islocal", true); //ローカル座標に変換 hashtable2.Add("time", 1); //Tweenの時間 hashtable2.Add("oncomplete", "ChangingEnd"); //Tween終了時に呼ばれる処理 hashtable2.Add("oncompletetarget", gameObject); //↑の処理を持っているオブジェクトを明記 iTween.MoveTo(arg_view2, hashtable2); }
public override IEnumerator OnEnter() { //ステージの踏破具合などを取得 m_stageSelectInfo.Initialize(); //背景動かしさんを初期化 m_backGroundMover.Initialize(); //最初のステートはステージを選ぶ段階 m_state = SelectSceneState.StageSelect; m_halfPointContent = m_halfPointSelectScrollView.transform.Find("Viewport/Content").gameObject; m_isChangingScrollView = false; m_trueSprite = Resources.Load <Sprite>("Contents/StageSelect/Textures/SP_HalfPointButton_Normal"); m_falseSprite = Resources.Load <Sprite>("Contents/StageSelect/Textures/SP_HalfPointButton_False"); //スクリーンで最初に使われている画像を取得 m_screenBase = m_screenImage.sprite; //ステージ選択ボタンの初期化 for (int i = 0; i < m_stageSelectButton.Length; i++) { StageSelectButtonInfo temp = new StageSelectButtonInfo(); temp = m_stageSelectButtonInfo[i]; m_stageSelectButton[i].onClick.AddListener(() => { OnStageSelectedPress(temp); }); //到達率をInfoから取得 int arrivalCount = m_stageSelectInfo.GetOpenStageCount(); Image image = m_stageSelectButton[i].GetComponent <Image>(); //生成されたのが一個目のボタンなら if (i == 0) { image.sprite = m_trueSprite; } //生成したボタンが到達率より低いボタンなら else if (i < arrivalCount) { image.sprite = m_trueSprite; } //生成したボタンが到達率より高いボタンなら else { //ボタンのグラフィックを灰色の物に差し替え、Buttonを切る image.sprite = m_falseSprite; m_stageSelectButton[i].GetComponent <Button>().enabled = false; } } m_sceneString = ""; m_stageSelectScrollView.SetActive(false); m_stageSelectScrollView.SetActive(true); AudioManager.Instance.RegisterBGM("BGM_StageSelect"); AudioManager.Instance.PlayBGM(1.5f); AppManager.Instance.m_fade.StartFade(new FadeIn(), Color.black, 1.0f); yield return(new WaitWhile(AppManager.Instance.m_fade.IsFading)); }
public override IEnumerator OnUpdate() { while (true) { switch (m_state) { //ステージを選ぶ case SelectSceneState.StageSelect: //ステージが選ばれたら遷移 if (m_isStageSelect) { m_backGroundMover.FocusAtPoint(AppManager.Instance.user.m_temp.m_playStageId); CreateHalfPointButtons(AppManager.Instance.user.m_temp.m_playStageId); //戻るボタン、ステージセレクトボタンを一時的に押せなくする ChangeButtonActive(false); m_state = SelectSceneState.BackGroundMoving; m_isStageSelect = false; } //戻るボタンが押されたら if (m_isBack) { //タイトルシーンへ戻りますか? m_isBack = false; //モーダルの表示 UIManager.Instance.PopupGameReadyModal("タイトルへ戻りますか?", () => { AudioManager.Instance.QuickPlaySE("SE_StageSelectButton"); m_sceneString = "Title"; }); } break; //背景が動いている case SelectSceneState.BackGroundMoving: //動きが止まったら遷移 if (!m_backGroundMover.IsFocusing()) { ChangingScrollView(m_stageSelectScrollView, m_halfPointSelectScrollView); m_state = SelectSceneState.ChangingView; } break; //スクロールビューを入れ替えている case SelectSceneState.ChangingView: //入れ替えが終了したら遷移 if (!m_isChangingScrollView) { //レイヤーの押せなくなっている状態を解除 ChangeButtonActive(true); //BackGroundMovingから呼ばれたのなら、中間地点を選ぶステートへ if (m_whenChangesState == SelectSceneState.BackGroundMoving) { m_state = SelectSceneState.SelectHalfPoint; } //SelectHalfPointから呼ばれたのなら、ステージを選ぶステートへ else if (m_whenChangesState == SelectSceneState.SelectHalfPoint) { //生成されていたボタンを削除 DestroyHalfPointButtons(); m_state = SelectSceneState.StageSelect; } } break; //中間地点を選ぶ case SelectSceneState.SelectHalfPoint: //戻るボタンが押されたら遷移 if (m_isBack) { //戻るボタン、ステージセレクトボタンを一時的に押せなくする ChangeButtonActive(false); //スクロールを入れ変える ChangingScrollView(m_stageSelectScrollView, m_halfPointSelectScrollView); m_state = SelectSceneState.ChangingView; //スクリーン画像を最初の画像に戻す m_screenImage.sprite = m_screenBase; m_isBack = false; } break; } //遷移するシーンが決まったら遷移する if (m_sceneString == "Main" || m_sceneString == "Title") { yield break; } yield return(null); } }
private void Update() { if (Input.GetKeyDown(KeyCode.Escape)) { Application.Quit(); return; } switch (currentState) { case SelectSceneState.FIRST_SELECTED: if (Input.GetKeyDown(KeyCode.Return)) { Global.player1Selected = ControllerSelector.KEYBOARD_LEFT; player1ObjRef.SetActive(true); player1ImageRef.sprite = showSelecteds[0]; currentState = SelectSceneState.SECOND_SELECTED; } else if (Input.GetKeyDown(KeyCode.KeypadEnter)) { Global.player1Selected = ControllerSelector.KEYBOARD_RIGHT; player1ObjRef.SetActive(true); player1ImageRef.sprite = showSelecteds[0]; currentState = SelectSceneState.SECOND_SELECTED; } else if (Input.GetKeyDown(KeyCode.Joystick1Button7)) { Global.player1Selected = ControllerSelector.JOYSTICK_FIRST; player1ObjRef.SetActive(true); player1ImageRef.sprite = showSelecteds[1]; currentState = SelectSceneState.SECOND_SELECTED; } else if (Input.GetKeyDown(KeyCode.Joystick2Button7)) { Global.player1Selected = ControllerSelector.JOYSTICK_SECOND; player1ObjRef.SetActive(true); player1ImageRef.sprite = showSelecteds[1]; currentState = SelectSceneState.SECOND_SELECTED; } break; case SelectSceneState.SECOND_SELECTED: if (Input.GetKeyDown(KeyCode.Return)) { Global.player2Selected = (Global.player1Selected == ControllerSelector.KEYBOARD_LEFT) ? ControllerSelector.KEYBOARD_RIGHT : ControllerSelector.KEYBOARD_LEFT; player2ObjRef.SetActive(true); player2ImageRef.sprite = showSelecteds[0]; currentState = SelectSceneState.SHOW_TUTORIAl; } else if (Input.GetKeyDown(KeyCode.KeypadEnter)) { Global.player2Selected = (Global.player1Selected == ControllerSelector.KEYBOARD_RIGHT) ? ControllerSelector.KEYBOARD_LEFT : ControllerSelector.KEYBOARD_RIGHT; player2ObjRef.SetActive(true); player2ImageRef.sprite = showSelecteds[0]; currentState = SelectSceneState.SHOW_TUTORIAl; } else if (Input.GetKeyDown(KeyCode.Joystick1Button7)) { Global.player2Selected = (Global.player1Selected == ControllerSelector.JOYSTICK_FIRST) ? ControllerSelector.JOYSTICK_SECOND : ControllerSelector.JOYSTICK_FIRST; player2ObjRef.SetActive(true); player2ImageRef.sprite = showSelecteds[1]; currentState = SelectSceneState.SHOW_TUTORIAl; } else if (Input.GetKeyDown(KeyCode.Joystick2Button7)) { Global.player2Selected = (Global.player1Selected == ControllerSelector.JOYSTICK_SECOND) ? ControllerSelector.JOYSTICK_FIRST : ControllerSelector.JOYSTICK_SECOND; player2ObjRef.SetActive(true); player2ImageRef.sprite = showSelecteds[1]; currentState = SelectSceneState.SHOW_TUTORIAl; } break; case SelectSceneState.SHOW_TUTORIAl: if (!tutorialObj.activeSelf) { tutorialState(); } else if (Input.GetKeyDown(KeyCode.Joystick1Button7) || Input.GetKeyDown(KeyCode.Joystick2Button7) || Input.GetKeyDown(KeyCode.Return)) { StartCoroutine(LoadScene()); } break; } }