일단 프로젝트부터 만들어 보자.
사용버전은 5.2라 V4.x와는 내용이 다를수 있습니다. 사실 이득우의 C++로 공부하려고 했는데 내용이 전혀 달라 그냥 베르님의 유튜브로 공부하기로 했습니다.
https://www.youtube.com/watch?v=DkJqLIpSvik
게임>ThirdPerson>C++를 선택하자 블루프린트가 아닌 C++. 이름을 대충정하자.
C++클래스 생성
메뉴 Tools>New C++ Class나
컨텐트드로워 C++Classes폴더에서 +Add나 우클릭하면 된다.(다른폴더는 안된다)
부모클래스는 레벨에서 사용할 수 있는 Actor클래스를 선택하고 이름은 디폴트인 MyActor를 사용한다.
VisualStudio가 뜨는데 뭔가 라이브코딩이라는 화면이 뜨는데 무시하고 닫아주면된다.
C++Classes안에 프로젝트명의 폴더안에 들어가며 MyActor가 보인다. 더블클릭하면 이동할것 같은데 아무런 반응이 없다 ㅠㅠ. 하여간 비쥬얼 스튜디어에서 볼수는 있었습니다.
비주얼스튜디오 위에 뭔가 클릭했더니 뭔가 툴이 나타나서 깔아봤다
이게 깐다고 되는게 아니라 깔고난뒤 언리얼에서 다시 설치를 해야한다.ㅠㅠ
하여간 설치해도 문제가 해결되지 않는다.
하여간 MyActor를 누르면 VisualStudio가 뜨는데 안 뜨면 VisualStudio로 이동한다.
#include "MyActor.h"
// Sets default values
AMyActor::AMyActor()
{
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
UE_LOG(LogTemp, Log, TEXT("Constructor()"));
}
// Called when the game starts or when spawned
void AMyActor::BeginPlay()
{
Super::BeginPlay();
UE_LOG(LogTemp, Log, TEXT("BeginPlay()"));
}
// Called every frame
void AMyActor::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
UE_LOG(LogTemp, Log, TEXT("Tick()"));
}
액터와 같은 이름의 컨스트럭터(), 초기에 한번 실행되는 BeginPlay(), 매프레인 실시되는 Tick()함수가 보였다.
UE_LOG(LogTemp, Log, TEXT("함수명"));를 함수마다 추가해주었다.
이제 MyActor를 끌어다 Level에 놓고 실행해보고 Output Log를 눌러 로그창을 보면 열심히 프린트한다.
LOG한줄 쓰는데 이렇게 힘들다니 ㅠㅠ