2D platformer Touch button?

Hello, I am really new at this and I’m following a tutorial to make a 2D platformer. For anyone wondering: Unity Connect .

So I changed some stuff, I made the character run on his own instead of using the arrow keys as the tutorial was instructing. The game works fine on PC using the space key to just jump.

What I need is some help adding a single touch button, basically, so that I can play the game on a phone.
I only need the Jump to work. How do I link the Jump function to a button or even better to the whole screen of the game ?

Also something extra, I’d like to know how to save a high score of the game after losing.

Here is the code I’m using for the controls (so someone can help with the Jump - touch thing):

using UnityEngine;
using System.Collections;

public class SimplePlatformController : MonoBehaviour {

[HideInInspector] public bool facingRight = true;
[HideInInspector] public bool jump = false;
public float moveForce = 365f;
public float maxSpeed = 5f;
public float jumpForce = 1000f;
public Transform groundCheck;

private bool grounded = false;
private Animator anim;
private Rigidbody2D rb2d;

// Use this for initialization
void Awake () 
{
    anim = GetComponent<Animator>();
    rb2d = GetComponent<Rigidbody2D>();
}

// Update is called once per frame
void Update () 
{
    grounded = Physics2D.Linecast(transform.position, groundCheck.position, 1 << LayerMask.NameToLayer("Ground"));

    if (Input.GetButtonDown("Jump") && grounded)
    {
        jump = true;
    }
}

void FixedUpdate()
{
    float h = Input.GetAxis("Horizontal");

    anim.SetFloat("Speed", Mathf.Abs(h));

    if (h * rb2d.velocity.x < maxSpeed)
        rb2d.AddForce(Vector2.right * h * moveForce);

    if (Mathf.Abs (rb2d.velocity.x) > maxSpeed)
        rb2d.velocity = new Vector2(Mathf.Sign (rb2d.velocity.x) * maxSpeed, rb2d.velocity.y);

    if (h > 0 && !facingRight)
        Flip ();
    else if (h < 0 && facingRight)
        Flip ();

    if (jump)
    {
        anim.SetTrigger("Jump");
        rb2d.AddForce(new Vector2(0f, jumpForce));
        jump = false;
    }
}

void Flip()
{
    facingRight = !facingRight;
    Vector3 theScale = transform.localScale;
    theScale.x *= -1;
    transform.localScale = theScale;
}

}

And here is the code I’m using to count the score, so maybe someone can suggest how to keep track of the highscore even after restarting the game :

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class Score : MonoBehaviour
{
Text text;
private SimplePlatformController player;

// Use this for initialization
void Start()
{
    text = GetComponent<Text>();
    player = FindObjectOfType<SimplePlatformController>();
}

void Update()
{
    text.text = "Coins: " + player.coins;
    
}

}

Coins are counted in the corner of the game using UI → text

Any kind of help is highly appreciated. Keep in mind I’m a complete newbie at this so I’m sorry if I explained something wrongly.

So you’re already using the UI then. Just add a button to it and either delete the Image and text components or add a Canvas Group to is and set its Alpha to 0.

Create a public function to set jump to true, on the button in the inspector click + on the OnClick section and a slot appears, drag the object with your script on it onto the slot and from the drop down to the right select SimplePlatformController → YourJumpFunction.

Simple as that with the UI, will work with mouse input on a PC or touch input on a phone.

You might have to set jump to false if true and not grounded to prevent a jump triggering when you land but it should be pretty easy to get working.