UnityC#变量调用问题

在函数中对变量进行了赋值,但是在Update函数中任然为空
private GameObject enemy;

void Update()
{
    
    if (enemy != null)
    {
        transform.LookAt(enemy.transform.position);
    }
    
    
    transform.position += transform.forward * speed * Time.deltaTime;
}
public void LookOn(GameObject obj)
{
    enemy = obj;
}
在LookOn函数中Debug显示enemy已赋值,但在Update函数中Debug显示enemy任然为空,执行不了if语句
我试过把enemy变量改为静态,但出现一个情况,假如有多个obj传进来,前一个enemy会被后面传进来的enemy修改掉,导致我的攻击只能打到其中一个敌人
就只在另一个脚本的函数里调用过LookOn函数
public void LaunchSpell()
    {
        for (int i = 0; i < enemies.Length; i++)
        {
            if (enemies[i].GetComponent<Enemy>().m_BlowBool == true)
            {
                GameObject SB = GameObject.Instantiate(spellBall) as GameObject;
                SB.transform.SetParent(null);
                SB.transform.position = SpellPlace.position;
                SB.transform.LookAt(enemies[i].transform.position);
                spellBall.GetComponent<SpellBall>().LookOn(enemies[i]);
                enemies[i].GetComponent<Enemy>().m_BlowBool = false;
            }
        }
    }

代码看不出来问题。