나는 튜토리얼을 볼때 생각없이 아무것도 모른다고 그대로 따라치면서 배우는걸 매우 싫어한다.
옛날에 유니티 처음배울때야 그랬지만 결국 외우기밖에 안됐으니까.
문제의 원인은 이것.
튜토리얼의 소스는 UUserWidget을 상속받은 자식을 또 상속받아서 손주뻘의 클래스를 만들어서
스크린샷과 같이 초기화하면 잘 되는데.
내 프로젝트에선 그럴 필요가 없어서 손주를 안만들고 그냥 한번만 상속해서 하려니 저렇게 된것이다.
UuserWidget을 상속받아 메인메뉴 페이지를 만들고있는데.
분명 엔진소스에도 저렇게 생성자쓰라고 명시되어있는데 가져다 쓰려니.
기본생성자가 없다고 저렇게 컴파일 에러가 난다.
그래서 기본생성자 만들어서 넣어보고
기본생성자 없애서 안쓸거라고 delete해보고
별지롤을 다해봤는데 해결이 안되더라.
그래서 X나게 구글링했다.
https://answers.unrealengine.com/questions/252844/view.html
https://www.slideshare.net/secret/EywLl7Qd2CWYkc
해결방법은 주석친 부분을 삭제하는것이었고
저 부분의 정의를 보면 cpp로 가게된다.
알아보니 언리얼클래스를 상속받아 쓸때
엔진소스에서 만들어놓은 초기화내용을 프로그래머가 임의로 덮어쓰지 못하게 막아놓은것이다.
그니까 : Super(ObjectInitializer)을 붙여서 부모생성자의 초기화는 그대로 받아와서 초기화 한 후에
내가 하고싶은 초기화를 추가 하도록 만들어 놓았다는 것 이다.
주로 컴포넌트추가 설정할때 쓴다고 줏어들음
버전은 4.22
그리고 헤더파일에 있는 생성자도 삭제해줘야한다.
의도는 알았고 문제 해결도 되었는데.
뭔가 또 엿먹은 기분은 뭘까..
'언리얼엔진 > c++' 카테고리의 다른 글
타이머를 사용해 일정시간이 지난후 함수호출하기. (0) | 2019.05.20 |
---|---|
Const 위치마다 헷갈려서 정리. (0) | 2019.04.16 |
스마트포인터 (0) | 2019.04.10 |