Arduino and Unity 3d Communication

here some delay while i pressed btn, unity responded after five or six second later
plz help me some one...

this is arduino sketch

int led = 13;
int btn = 4;
int btn2 = 3;

void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT);
pinMode(btn, INPUT);
pinMode(btn2, INPUT);

}

void loop() {

if(digitalRead(btn) == HIGH)
{
digitalWrite(led, HIGH);
Serial.write(1);
Serial.flush();
delay(20);
Serial.println("1");

}
else
{
digitalWrite(led, LOW);
}

//////////////////////////////////
if(digitalRead(btn2) == HIGH)
{
digitalWrite(led, HIGH);
Serial.write(2);
Serial.flush();
delay(20);
Serial.println("2");

}

}

this is unity script that receive data from arduino

uusing UnityEngine;
using System.IO.Ports;
using UnityEngine.UI;
using System.Collections;

public class InComing : MonoBehaviour {
SerialPort sp = new SerialPort("COM7", 9600);

//public Text rArduino;

void Start ()
{
sp.Open();
sp.ReadTimeout = 1;
}
//////////////////////////////
void Update () {

try
{
string st = ""+ sp.ReadByte();
Debug.Log(st+"");

moveObject(st);

}catch(ExitGUIException)
{}

}

void moveObject(string dir)
{
if(dir == "1")
{
transform.Translate(2 * Time.deltaTime, 0, 0, Space.World);
//transform.Translate(Vector3.right * 5 * Time.deltaTime, Space.World);
}

if(dir == "2")
{

transform.Translate(2 * -Time.deltaTime, 0, 0, Space.World);
//transform.Translate(Vector3.left * 5 * Time.deltaTime, Space.World);
}

}

}

Did you a question?

Please edit your post to add [ code ] tags around the code. The forum software misinterprets some code.