Team Project #4
2D - Top Down + 멀티 협동 탈출 게임
재정의할 메서드를 찾을 수 없습니다.
컴파일러 오류 CS0115 : ‘function’: 재정의할 적절한 메서드를 찾을 수 없습니다.
메서드가 override로 표시되었지만 컴파일러에서 재정의할 메서드를 찾을 수 없는 경우에 발생한다.
// UsableItemData.cs
public abstract class UsableItemData : MonoBehaviour
{
[SerializeField] private bool destroyOnPickup = true;
[SerializeField] private LayerMask saveOnPickup;
private void OnTriggerEnter2D(Collider2D other)
{
if (saveOnPickup.value == (saveOnPickup.value | (1 << other.gameObject.layer)))
{
OnUse(other.gameObject);
if (destroyOnPickup)
{
Destroy(gameObject);
}
}
}
protected abstract void OnUse(GameObject receiver);
}
// Grenade.cs
public class Grenade : UsableItemData
{
[SerializeField] int damage = 20;
protected override void OnUse(GameObject receiver)
{
// 수류탄을 실행시키는 함수
}
}
<문제 상황>
Grenade가 추상 클래스 UsableItemData를 상속받고 있다.
따라서 OnUse 함수를 반드시 구현해야 한다.
<해결 방법>
(1) OnUse 함수에서 override 키워드 제거하기
(2) UsableItemData를 OnUse의 기본 클래스로 사용하기 (직접 상속)
즉 오류 CS0115는 상속 과정에서 발생한 오류라고 볼 수 있다.
그런데 내가 문제를 해결한 방법은 override를 사용한 클래스를 지우고 똑같이 override를 사용해 다시 작성한 것이다.
한 글자도 바꾸지 않고 다시 작성했더니 오류가 사라졌다.
이 경우 override를 먼저 생성하고 상위 클래스를 나중에 구현하다보니 상속 받은 클래스가 상위 클래스를 인식하는 것에서 오류가 발생했던 것 같다.
<공부 자료>
https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/compiler-messages/cs0115


'게임 개발 일지 > 내일배움캠프 TIL' 카테고리의 다른 글
| [트러블슈팅 공부] 팀 프로젝트 발표회 #4 (0) | 2024.01.09 |
|---|---|
| [디자인 패턴] 싱글턴, 상태패턴, 이벤트버스 (0) | 2024.01.08 |
| [Unity 공식 문서 공부] Scriptable Object (1) | 2024.01.04 |
| Item 로직 초안 (0) | 2024.01.04 |
| 오버로딩과 오버라이딩 / 오브젝트 풀링 (1) | 2024.01.02 |
댓글