Unity:大神看看小弟我的自动炮塔代码有关问题在哪里

Unity:大神看看我的自动炮塔代码问题在哪里
目的:炮塔自动攻击AttackRange内最先进入的有Plater标记的玩家,如果该玩家离开AttackRange,就再选择AttackRange内最近的玩家攻击。
我的代码测试结果是没有玩家进入AttackRange时Target是null,进入后Target在null和该玩家之间迅速切换,请大神看看我错在哪里了啊???
function FixedUpdate () {
if (target == null)
{
target = FindClosestPlayerInAttackRange ();
return;
}

if (!CanSeeTarget ())
{
target = null;
return;
}
        }
         function FindClosestPlayerInAttackRange () : Transform { 
var gos : GameObject[] = GameObject.FindGameObjectsWithTag("Player"); 
var closest : GameObject; 
var distance = Mathf.Infinity; //无限距
var position = transform.position; 
var curDistance:float;
for (var go : GameObject in gos) { 
var diff = (go.transform.position - position); 
curDistance = diff.sqrMagnitude; 
if (curDistance < distance) { 
closest = go; 
distance = curDistance; 


if(closest != null && distance<=attackRange)
{
return closest.transform; 
}
return null;
}

function CanSeeTarget () : boolean
{
if (Vector3.Distance(transform.position, target.position) > attackRange)
return false;

var hit : RaycastHit;
if (Physics.Linecast (transform.position, target.position, hit))
return hit.transform == target;

return false;
}


------解决思路----------------------
额,所以说99%的bug自己分析都会找到的~定位到某一行代码后,就一定可以得出结论。