Works/Unity 3D

[Unity3D] error CS0103: The name `OnMakeBug' does not exist in the current context

Vader87 2019. 4. 18. 16:05
반응형

개발중에 특이한 이슈를 발견하여 기록으로 남깁니다.

개발 환경

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()
    {

    }
}

에러가 없어졌습니다. 만세!

반응형