MultiTouch issues

I am having 4 textures as player controls in my scene on which I am trying to detect touches using the following code:

//left,right,attack,jump are textures;

for (int i = 0; i< Input.touches.GetLength(0); i++) {
					if (left.HitTest (Input.GetTouch (i).position) && Input.GetTouch (i).phase != TouchPhase.Ended) {
							//player.SendMessage ("Move", -1);
					}
					if (right.HitTest (Input.GetTouch (i).position) && Input.GetTouch (i).phase != TouchPhase.Ended) {
							//player.SendMessage ("Move", 1);
					}
					if (!right.HitTest (Input.GetTouch (i).position) && !left.HitTest (Input.GetTouch (i).position)) {
							//player.SendMessage ("Move", 0.0f);
							
					}
					if (jump.HitTest (Input.GetTouch (i).position) && Input.GetTouch (i).phase == TouchPhase.Began) {
							//player.SendMessage ("Jump", true);
                    }
					if (attack.HitTest (Input.GetTouch (i).position)) {
							//player.SendMessage ("AttackKeyPressed", true);
					}
			}

The problem I am getting is that I am unable to detect simultaneous touches on 2 textures like left and jump texture. touching the jump textures stops the left texture action.
How can I do this?

Or is there any better strategy to implement this?

SendMessage is not a good way to handle this, instead you may want to access player’s script. Untested but something like below.

Also I have added a condition where both left & right buttons are pressed, in your script, it would go right.

public GameObject player;
PlayerScript someVariableName;

void Start(){
    someVariableName = player.GetComponent<PlayerScript>();
}

void Update(){
if(Input.touchCount > 0){
for (int i = 0; i< Input.touchCount; i++) {
    if(right.HitTest (Input.GetTouch(i).position) && left.HitTest (Input.GetTouch (i).position)){
        someVariableName.Move(0.0f);
    } else if (left.HitTest (Input.GetTouch(i).position) && Input.GetTouch (i).phase != TouchPhase.Ended) {
        someVariableName.Move(-1.0f);
    } else if (right.HitTest (Input.GetTouch(i).position) && Input.GetTouch (i).phase != TouchPhase.Ended) {
        someVariableName.Move(1.0f);
    } else if (!right.HitTest (Input.GetTouch(i).position) && !left.HitTest (Input.GetTouch (i).position)) {
        someVariableName.Move(0.0f);
    }
    if (jump.HitTest (Input.GetTouch(i).position) && Input.GetTouch (i).phase == TouchPhase.Began) {
        someVariableName.Jump(true);
    }
    if (attack.HitTest (Input.GetTouch(i).position)) {
        someVariableName.AttackKeyPressed(true);           
    }
}
}
}