📌
오늘은 디버깅하면서 발생한 오류를 가볍게 정리하려고 한다.
학습 내용
1. GetComponent를 찾을 수 없는 오류
2. Attack 함수가 무한으로 호출되는 오류
1. GetComponent를 찾을 수 없는 오류
저번에 베이직 반에서 겪었던 오류랑 맥락이 똑같았다.
초기화 될 때 아직 오브젝트가 생성되지 않았는데 자식 컴포넌트를 찾게 되면서 발생한 오류!
Awake에 있던 GetComponentInChildren 코드를 Start로 옮겨주면서 해결되었다.
2. Attack 함수가 무한으로 호출되는 오류
public override void Attack()
{
Debug.Log("공격했다!");
if (_attackCoroutine == null)
{
// 실행
_attackCoroutine = StartCoroutine(AttackRoutine());
}
} // 공격
private IEnumerator AttackRoutine() // 공격 시작
{
var playerCondition = PlayerManager.Instance.Player.GetComponent<IDamagable>();
if (playerCondition != null)
playerCondition.TakeDamage(_monster.AttackPower);
yield return new WaitForSeconds(_monster.AttackSpeed);
_attackCoroutine = null;
}
수정 이전에는 _attackCoroutine이 null이 아니면 코루틴을 정지하고 다음 코루틴을 실행하도록 했다.
이렇게 될 경우 AttackRoytine 의 스피드 만큼 공격이 멈춰있을 때 기다리지 않고 다음 프레임에서 현재 코루틴을 정지하고 다음 코루틴을 실행하게 되면서 매 프레임마다 코루틴이 동작하게 되는 버그가 발생한 것!
코루틴이 null 일 때 코루틴을 실행하고 코루틴을 한 번 실행하면 다시 null 로 바꿔주게 함으로써 정상적으로 작동되었다.
진짜 한 글자 차이로 오류 나는 경우가 너무 많은 것 같다... 우울하다...
'[내배캠] 본 캠프 개발 학습 > 매일매일 쓰는 TIL' 카테고리의 다른 글
11월 8일 금요일 본 캠프 개발 일지 | 델리게이트 특강 (0) | 2024.11.08 |
---|---|
11월 7일 목요일 본 캠프 개발 일지 | 결국 못 정했조 팀 프로젝트 (end) (2) | 2024.11.07 |
11월 5일 화요일 본 캠프 개발 일지 | 결국 못 정했조 팀 프로젝트 (4) | 2024.11.05 |
10월 30일 수요일 본 캠프 개발 일지 | 개인 프로젝트 (end) (0) | 2024.10.30 |
10월 28일 월요일 본 캠프 개발 일지 | 개인 프로젝트 (1) (2) | 2024.10.28 |