how to make this script batter?

hay everyone i am using this script for do jump my player by single or double click but in single Click it jump after some delay how i fix it?
using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class Move : MonoBehaviour {
public float jumpForce = 1.0f;
public float speed = 7.0f;
public GameObject Canvas;
public Text point;
public Text hits;
int pointscount;
int hitscount;
bool jump;
bool doblejump;
bool IsGrounded;
private int mouseClicks = 0;
private float mouseTimer = 0f;
private float mouseTimerLimit = .30f;
void Start () {

}


void Update () {

    transform.position += new Vector3(speed * Time.deltaTime, 0,0);
	Run_Animation();

	jump = false;
	doblejump = false ;

    if (Input.GetMouseButtonDown(0))
    {
		Touch  touch = Input.GetTouch (0);
		if(touch.position.x > Screen.width/2){
        mouseClicks++;
        // Debug.Log("Num of mouse clicks ->" + mouseClicks);
		}
    }

    if (mouseClicks >= 1 && mouseClicks < 3)
    {
        mouseTimer += Time.fixedDeltaTime;

        if (mouseClicks == 2)
        {
            if (mouseTimer - mouseTimerLimit < 0)
            {
                /*double click event*/
                Debug.Log("Mouse Double Click");
                mouseTimer = 0;
                mouseClicks = 0;
                doblejump = true; 
                
            }
            else
            {
                /* single click event*/
                Debug.Log("single click innner");
                mouseClicks = 0;
                mouseTimer = 0;
                jump = true;
               
            }
        }
        if (mouseTimer > mouseTimerLimit)
        {
            /* single click event*/
            Debug.Log("single click Outer");
            mouseClicks = 0;
            mouseTimer = 0;
            jump = true;
            
        }
    }
}
void Run_Animation(){
	if(IsGrounded == true){
	animation.Stop ("Peeps_Jump_Pose");
	animation.CrossFadeQueued("Peeps_Run",0.5f,QueueMode.CompleteOthers);
	}
}
void FixedUpdate()
{
	if (jump == true && IsGrounded == true )
	{
		jump = false;
		IsGrounded=false;
		animation.CrossFade ("Peeps_Jump_Pose");
		//Debug.Log ("Single Jump");
		rigidbody2D.velocity = new Vector2(0,jumpForce*1.5f);

	}
	if (doblejump == true && IsGrounded == true ) {
		doblejump = false ;
		IsGrounded=false;
		animation.CrossFade ("Peeps_Jump_Spin");
		//Debug.Log ("Double Jump");
		rigidbody2D.velocity = new Vector2(0,jumpForce*2);

	}
}
void OnCollisionEnter2D(Collision2D TheCollision){
	if(TheCollision.gameObject.tag == "Road"){
		IsGrounded = true ;
		//Debug.Log ("Enter");
	}
}

void OnTriggerEnter2D(Collider2D other){
	if(other.gameObject.tag == "Ded"){
		Application.LoadLevel (0);
	}
	if (other.gameObject.tag == "Blade")
	{
		hitscount += 1;
		showScore();
	}
	if (other.gameObject.tag == "Box") {
		pointscount += 1;
		showScore();
		other.gameObject.SetActive(false);
	}
}
void showScore(){
	point.text = "Point:"+pointscount;
	hits.text = "hits:"+ hitscount;
}

}

Well it will jump after delay because you set it to in line 46 of your code “if (mouseTimer > mouseTimerLimit)”.

Reduce your “mouseTimerLimit = 0.30f;” to something lower.

Also in your line 23 “mouseTimer += Time.fixedDeltaTime;” you’d be better off using “Time.deltaTime” instead.

P.S. Also in your line 46 use “else if” instead of “else”.