简体   繁体   中英

When i press button on the game scene its starts the game

my problem is I have a Shop button in the game scene so when I press it doesn't take me to the shop scene it starts the game, I want when I press the button take me to the shop scene! , I will post my code I hope you can guys help me because I spend one day reading about that and I didn't get any result PLEASE HELP!

Mobile Input script

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 script

    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");
        }
    }
}

You can create an invisible UIButton to cover the screen except the ShopButton area. Define two public methods in your GameManager script, one for start game, on for show shop, and link these to methods to the UIButtons by adding an OnClick Handler in the Button Component of your UIButtons.

Don't forget to disable the PlayButton after clicking it ;)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM