Enemy Select

Im having a real tough time programming this script basically what im trying to do is program my game so that i can select enemies with my mouse but all it does when i click the mouse is cycle through my enemies no matter where i click, i posted this many times and all ive can up with was dead ends i am very new to unity and programming so if you can alter or re write this script in c# it would be greatly appreciated thanks

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Targeting : MonoBehaviour {
 public List<Transform> targets;
 public Transform selectedTarget;
 
 private Transform myTransform;
 
  // Use this for initialization
 void Start () {
  targets = new List<Transform>();
  selectedTarget = null;
  myTransform = transform;
  
  AddAllEnemies();
 }
 
 public void AddAllEnemies()
 {
  GameObject[] go = GameObject.FindGameObjectsWithTag("Enemy");
  
  foreach(GameObject enemy in go)
   AddTarget(enemy.transform);
 }
 
 public void AddTarget(Transform enemy)
 {
  targets.Add(enemy);
 }
 
 private void SortTargetsByDistance()
 {
  targets.Sort(delegate(Transform t1, Transform t2) {
          return Vector3.Distance(t1.position, myTransform.position).CompareTo(Vector3.Distance(t2.position, myTransform.position));
             });
 }
  private void TargetEnemy()
 {
  if(selectedTarget == null)
  {
   SortTargetsByDistance();
  selectedTarget = targets[0];
  }
  else
  {
  int index = targets.IndexOf(selectedTarget);
  
   if(index < targets.Count - 1)
   {
    index++;
   }
   else
   {
    index = 0;
   }
   DeselectTarget();
   selectedTarget = targets[index];
  }
   SelectTarget();
  }
  
  private void SelectTarget()
 {
  selectedTarget.renderer.material.color = Color.red;
  
  PlayerAttack pa = (PlayerAttack)GetComponent("PlayerAttack");
  
  pa.target = selectedTarget.gameObject;
 }
 
 private void DeselectTarget()
 {
  selectedTarget.renderer.material.color = Color.blue;
  selectedTarget = null;
 }
 
  // Update is called once per frame
 void Update(){
  
  //Only search if clicked
    if( Input.GetMouseButtonDown(0) ){
			
			TargetEnemy();
		}
	}
}

This is an interesting and smart script, but its purpose is exactly to cycle through the enemies by distance order. To select only the clicked enemy, you should use a completely different approach: do a raycast from the mouse pointer, and if an enemy is hit, deselect the previous one and select the clicked enemy.

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Targeting : MonoBehaviour {

  public Transform selectedTarget;

  void Update(){
    if (Input.GetMouseButtonDown(0)){ // when button clicked...
      RaycastHit hit; // cast a ray from mouse pointer:
      Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
      // if enemy hit...
      if (Physics.Raycast(ray, out hit) && hit.transform.CompareTag("Enemy")){
        DeselectTarget(); // deselect previous target (if any)...
        selectedTarget = hit.transform; // set the new one...
        SelectTarget(); // and select it
      }
    }
  }

  private void SelectTarget(){
    selectedTarget.renderer.material.color = Color.red;
    PlayerAttack pa = (PlayerAttack)GetComponent("PlayerAttack");
    pa.target = selectedTarget.gameObject;
  }

  private void DeselectTarget(){
    if (selectedTarget){ // if any guy selected, deselect it
      selectedTarget.renderer.material.color = Color.blue;
      selectedTarget = null;
    }
  }
}

NOTE: This is untested C# code from a JS guy - let me know if you have any error.