public void StopShooting() { CurrentWeapon.CancelInvoke("FireWeapon"); // FIX the problem where if you switch while shooting, it will keeps shooting the previous weapon. NOTE: CancelInvoke could be called from other script if the function is public (FireWeapon is protected) }