9 - Unreal Start. SVN, Asset Load

Overcle·2023년 2월 10일
0

학원

목록 보기
1/29

1~8일차는 언리얼이 아닌 C++로만으로 게임을 구축한 시기이기에 비공개처리.

학원 시리즈는 수업 내용 메모용이며 내용+정리 내용은 Unreal Study 시리즈에 추가 계획

요약
1. 클래스의 생성자가 호출되는 시점은, 에디터에 배치하는 시점이다.
2. 테스트 코딩 할 때는 컴파일 속도가 느리기 때문에 반복적인 값 등을 수정할 때는 블루 프린트로 작업을 하다가 결정나면 C++로 최종 코딩을 진행한다.
3. 전부 C++코딩으로 작성하게 되면 Final로 블루 프린트를 생성한다. 이유는 기획자, 디자이너 분들과 협업을 하기 위해.

Tip
1. End(키보드 키) :
오브젝트를 클릭 후 End키를 누르면 해당 오브젝트가 바닥에 부착한다.
2. include :
추가할 헤더파일이 있다면. "파일이름.generated.h" 위에 include를 할것.

따로 공부해서 정리해둘것
1. 공식 언리얼 유튜브 체널 챙겨보기.
2. 라이엇 게임즈 유튜브 체널 챙겨보기.

1. Controller


컨트롤러는 대표적으로 2가지가 있다.

Player Controller :
실제 플레이어이며.
클라이언트는 1개만 만들어지며 사용자가 입력한 내용을 전달받아 사용할 수 있다.

AI Controller :
사용자의 입력없이 인공지능에서 컨트롤할 수 있게 해준다.

2. Pawn


Player Controller 가 빙의할 수 있는 Actor이다.
Actor를 상속받아 만들어졌으며
Player Controller가 받아온 입력을 Pawn에도 전달할 수 있다.
AI Controller가 빙의 되었다며 인공지능을 동작시켜줄 수 있다.

Pawn에 PlayerInputController 를 하지 않도록 주의하자.

3. 레벨


코딩에서도 필터, 새폴더, 등등 한곳에 다만들지 않고 필터링을 하듯이.
게임엔진에서도 레벨이란 단어로 카테고리를 나누어서 작업을 한다.

4. 게임모드 베이스


각 레벨마다 월드 세팅을 할 수 있으며.
각 월드세팅 마다 게임모드를 개별 지정할 수 있다.
만약 지정하지 않았다면 프로젝트 세팅에 있는 기본 게임모드베이스가 할당되어 동작한다.

게임모드 베이스는 해당 레벨의 기본적인 Rule을 담당한다.

7. 라이브 코딩


그말대로 c++ 코딩할때 바로바로 핫로드를 하여 컴파일 시간을 단축시키는 기능인거같은데.
선생님의 말로는 오류가 너무너무 많으니 왠만하면 끄고하는걸 추천한다고 한다.

상단메뉴 > 편집 > 에디터 개인설정 > "라이브" 검색 > 라이브 코딩 활성화 체크해제

8. CoreMinimal.h 보단 EngineMinimal.h


캐릭터 클래스 생성 할 때.

CoreMinial이 Default로 생성될텐데 EngineMinimal로 하는게 기능이 많아서 추천.

별개로 추가할 헤더가 있다면 generated보다 위에 선언하기.

9. 에셋 로드 방식


로드 방식에는 2가지 방식이 있다.

정적 로드 방식과 동적로드 방식.

고정으로 로드 하는방식과
게임 시작하면서 로드하는 동적 로드 방식이 있다.

아래방식은 무조건 생성자에서만 해야한다.

AKnightCharacter::AKnightCharacter()
{
	
		static ConstructorHelpers::FObjectFinder<USkeletalMesh> KnightAsset(TEXT("");
        
        if(KnightAsset.Succeeded())
        
        GetMesh()->SetSkeletalMesh(KnightAsset.Object);
}

ConstructorHelpers 는 생성자에서만 사용이 가능하다.
Static을 포함시킨 이유는 당연히 1번만 실행해도 충분하기 때문.
TEXT""를 쓰는 이유는 언리얼은 2byte를 사용하기 떄문에 언리얼에서는 문자열을 TEXT로 사용한다.

Succeeded()함수는 해당 함수로 에셋을 정상적으로 불러오면 True를 반환하는 함수이며
SkeletalMeshComponent의 맴버 함수중 SetskeletalMesh함수를 이용하여
출력할 SkeletalMesh에셋을 저장한다.

Charactor 클래스에서 SkeletalMeshComponent,
// CapsuleComponent, ArrowComponent,
// CharacterMovemenComponent 는 private이기 때문에 자식 클래스에서 접근이 불가능 하기 때문에
Charactor에서 제공하는 함수를 이용하여 접근해야한다.
FObjectFinder객재의 OBject변수에 로딩한 에셋이 들어가 있다.

10. SVN


구글에서 거북이 SVN을 검색하여 설치하자.
회사에서도 쓰는 팀도있고 안쓰는 팀이 있다. 대중적인듯?

profile
게임 프로그래머 지망생의 발자취

0개의 댓글