2017-11-01 15 views
-1

私の問題はゲームシーンにショップボタンがありますので、それを押してもゲームシーンが始まります。ボタンを押して店のシーンに連れて行ってください!私は自分のコードを掲示します。私はあなたが私を助けてくれることを願っています。私はそれについて一日読むことを費やしました。結果は得られませんでした。私はゲームシーンのボタンを押すとゲームが始まります

モバイル入力スクリプト

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 

public class MobileInput : MonoBehaviour { 

private const float DEADZONE = 100.0f; 

public static MobileInput Instance { set; get; } 

private bool tap, swipeLeft, swipeRight, swipeUp, swipeDown; 
private Vector2 swipeDelta, startTouch; 

public bool Tap { get { return tap; } } 
public Vector2 SwipeDelta { get { return swipeDelta; } } 
public bool SwipeLeft { get { return swipeLeft; } } 
public bool SwipeRight { get { return swipeRight; } } 
public bool SwipeUp { get { return swipeUp; } } 
public bool SwipeDown { get { return swipeDown; } } 

private void Awake() 
{ 
    Instance = this; 
} 

private void Update() 
{ 
    //Reseting all the booleans 
    tap = swipeLeft = swipeRight = swipeUp = swipeDown = false; 

    //Let's check for inputs 
    #region Stanedalone Inputs 
    if (Input.GetMouseButtonDown(0)) 
    { 
     tap = true; 
     startTouch = Input.mousePosition; 
    } 
    else if (Input.GetMouseButtonUp(0)) 
    { 
     startTouch = swipeDelta = Vector2.zero; 
    } 
    #endregion 



    #region Mobile Inputs 
    if (Input.touches.Length != 0) 
    { 
     if (Input.touches[0].phase == TouchPhase.Began) 
     { 
      tap = true; 
      startTouch = Input.mousePosition; 
     } 

     else if (Input.touches[0].phase == TouchPhase.Ended || Input.touches[0].phase == TouchPhase.Canceled) 
     { 
      startTouch = swipeDelta = Vector2.zero; 
     } 

    } 
    #endregion 

    //Caluclate distance 
    swipeDelta = Vector2.zero; 
    if (startTouch != Vector2.zero) 
    { 
     //Let's check with mobile 
     if (Input.touches.Length != 0) 

     { 
      swipeDelta = Input.touches[0].position - startTouch; 
     } 
     //Lets check with standalone 
     else if (Input.GetMouseButton(0)) 
     { 
      swipeDelta = (Vector2)Input.mousePosition - startTouch; 
     } 
    } 

    //Let's check if we're beyond the deadzone 
    if (swipeDelta.magnitude > DEADZONE) 
    { 
     // this is a confirmed swipe 
     float x = swipeDelta.x; 
     float y = swipeDelta.y; 

     if (Mathf.Abs(x) > Mathf.Abs(y)) 
     { 
      // Left or right 
      if (x < 0) 
       swipeLeft = true; 
      else 
       swipeRight = true; 
     } 

     else 
     { 
      // Up or Down 
      if (y < 0) 
       swipeDown = true; 
      else 
       swipeUp = true; 
     } 

     startTouch = swipeDelta = Vector2.zero; 
    } 
} 

}

GameManagerスクリプト

private void Update() 
{ 
    if (MobileInput.Instance.Tap && !isGameStarted) 
    { 
     isGameStarted = true; 
     motor.StartRunning(); 
     FindObjectOfType<GlacierSpawner>().IsScrolling = true; 
     FindObjectOfType<CameraMotor>().IsMoving = true; 
     gameCanvas.SetTrigger("Show"); 
     MenuAnim.SetTrigger("Hide"); 
    } 
    if (isGameStarted && !isDead) 
    { 
     //Bump up the score 
     score += (Time.deltaTime * modifierScore); 
     if (lastScore != (int)score) 
     { 
      lastScore = (int)score; 
      scoreText.text = score.ToString("0"); 
     } 
    } 
} 
+0

あなたは 'loadLevel'を示しどこで見ることができません。私は[this](https://docs.unity3d.com/ScriptReference/Application.LoadLevel.html)を使ってシーン間を入れ替えます。シーンを追加して設定をビルドするようにしてください。 – Thalthanas

+0

私はあなたが望むものが得られなかったと思う、最初に私は店のシーンのためにシーン1のためにシーンを2つ持っていなければならないので、私はショップを押すときのゲームシーンに問題があるボタンを押すとゲームが自動的に開始され、モバイル入力スクリプトを無効にすると店舗のシーンに移動するので、モバイル入力スクリプトに問題があると思った –

+0

しかし、両方のコードでシーンを入れ替えることはできません?あなたは私を見せたり、どのスクリプトのどの行でこれをしているか教えてもらえますか? – Thalthanas

答えて

0

あなたはShopButtonエリアを除いて画面をカバーするために目に見えないUIButtonを作成することができます。あなたのGameManagerスクリプトに2つのパブリックメソッドを定義します.1つは開始ゲーム用、もう1つはショーショップ用、もう1つはメソッドにUIButtonsにリンクします.UibuttonのボタンコンポーネントにOnClickハンドラを追加します。

それをクリックした後のplayButtonを無効にすることを忘れないでください。)

+0

ありがとう、本当にありがとう! –

関連する問題