[Unity3D] error CS0103: The name `OnMakeBug' does not exist in the current context
개발중에 특이한 이슈를 발견하여 기록으로 남깁니다.
개발 환경
Unity 5.3.8p2
Visual Studio Professional 2015 Version 14.0.25431.01 Update3
다음과 같이 스크립트를 Unity 에 추가합니다.
public enum BUG
{
YEAH = 0,
}
public class MakeUnityBug<T>
{
public void MakeBug(BUG bug = BUG.YEAH)
{
OnMakeBug();
}
private void OnMakeBug()
{
}
}
그럼 Unity 에서 다음과 같은 에러를 출력합니다.
error CS0103: The name `OnMakeBug' does not exist in the current context
분명 코드에는 OnMakeBug 가 있지만 없다고 Unity가 구라를 칩니다.
이 버그를 고쳐 봅시다.
아래와 같이 의미 없는 추상 클래스를 추가해 주고 그 안에 Unity 가 없다고 구라치는 함수를 추상 메소드로 추가해 줍니다. 그리고 에러가 나던 클래스에서 상속받아 사용해 줍니다.
public enum BUG
{
YEAH = 0,
}
public abstract class FixUnityBug<T>
{
protected abstract void OnMakeBug();
}
public class MakeUnityBug<T> : FixUnityBug<T>
{
public void MakeBug(BUG bug = BUG.YEAH)
{
OnMakeBug();
}
protected override void OnMakeBug()
{
}
}
에러가 없어졌습니다. 만세!