private void SetTarget(Collider2D other) { ShootSkill.SaveTarget(_camp, other.transform); // 可能调用时敌人被消灭,不能调用协程取消锁定, 或当协程还未执行完时,敌人被消灭,也不能取消子弹锁定, 所有用GameManager的方法开启协程 // StartCoroutine(UnSetTarget(other)); GameManager.Instance.StartCoroutine(UnSetTarget(other)); }
// 当敌机被歼灭时或超过引导时间,取消引导 IEnumerator UnSetTarget(Collider2D target) { float time = 0f; while (time < signalTime) { yield return(null); time += Time.deltaTime; if (!target.gameObject.activeInHierarchy) { break; } } ShootSkill.SaveTarget(_camp, null); }