전체 글 (156)     블로그 내 검색 검색     글쓰기     관리자 썸네일형 리스트형 Unreal5 에러 로딩 해결 방법 C++ 클래스로 프로그램 작성시 언리얼로 로딩을 시작하는것 보다. 비주얼스튜디오 솔루션파일로 시작해야 액터들이 보인다. 물론 앞에서 설명한 방법으로 ctrl+Alt+F11로 라이브코딩해서 나타나게 할 수도 있다. 그런데 어느날 비주얼 스튜디오를 켠후 실행 버튼을 누르니 오류가 뜨면서 이전 버전으로 로딩할껀지 물어보는거다. 언리얼이 로딩되었지만 액터들이 보이지 않았고 그래서 앞의 설명들을 찾아보게 된거다. 결론은 연습중 ClassOnly.cpp에 UE_LOG를 추가하고 밥먹으로 가기위해 프로젝트를 저장하고 컴퓨터를 껏다가 이렇게 된거다. UE_LOG(LogTemp, Warning, TEXT("Current Tick %f"), DeltaTime); 결론은 내가 오타를 쳐서 에러가 난거였고 그 에러 때문에 해.. UE5 생성한 액터 콘텐츠 브라우저에 보이지 않는 경우 해결 방법 언리얼 5에서 액터(Actor)를 생성해보자. 하단의 콘텐츠 드로어에서 C++ 클래스 폴더를 마우스 오른쪽 버튼으로 클릭한 후, 새 C++ 클래스를 누른다. 또는 C++클래스 폴더를 선택한 상태에서 추가 버튼을 눌러도 된다. 액터를 선택하고 다음 버튼을 누른다. 이름을 적당히 지은 다음에 클래스 생성 버튼을 누르자. 프로젝트가 코드에 추가된다. 비주얼 스튜디오가 열리게 되고 컴파일이 시작된다. 콘텐츠 브라우저에 보면 MyActor가 추가된 것을 알 수 있다. 하지만 언리얼을 종료하고 다시 들어오게 되면 MyActor가 사라져있다. 이 경우 선택된 폴더에서 아무 파일이나 클릭해 비주얼 스튜디오를 켠다. 그리고 Ctrl + Alt + F11로 라이브 코딩 컴파일을 새로 하면 된다. 그러면 다시 MyActor.. UE5 빌드 환경 설정 및 컴파일 방법 참고 https://docs.unrealengine.com/5.0/ko/build-configuration-for-unreal-engine/언리얼 5, BuildConfiguration.xml 설정 Build Configuration Configure how the engine is built. docs.unrealengine.com 라이브 코딩 컴파일 - Ctrl + Alt + F11 or Cmd : LiveCoding.Compile 입력 라이브 코딩 해제 후 빌드 - Visual Studio, Ctrl + F5 빌드 환경 설정 언리얼 5에서 c++ 코드를 한 줄만 수정해도 빌드 시간이 매우 오래 걸린다. 아래는 아무 설정도 안하고 액터(MyActor.cpp/h)를 수정하였을 때 걸린 시간과 로그이다... 언리얼 C++ StaticMesh 추가하기 앞의 예제에서 StaticMeshComponent까지 추가했지만 StaticMesh를 레벨에디터에서 추가해줘야 했습니다. 이제 이마저도 C++에서 추가해보겠습니다. AClassOnly::AClassOnly() { // 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; Mesh = CreateDefaultSubobject(TEXT("MESH")); RootComponent = Mesh; ConstructorHelpers::FObjectFinder SM(TEXT("/Game/StarterConte.. 언리얼 C++ StaticMesh컴포넌트 추가하기 레벨블루프린트에디터에서 인스턴스에 추가했던 스태틱메시컴포넌트를 이제 C++코드상에서 추가해 보겠습니다. ClassOnly.h 맨밑에 아래 2줄을 추가해줍니다. public: // Called every frame virtual void Tick(float DeltaTime) override; UPROPERTY(VisibleAnywhere) UStaticMeshComponent* Mesh; }; UPROPERTY(VisibleAnywhere)는 아래 변수를 리플렉션해주는겁니다. 디테일에 표시되게 해주는거죠. UStaticMeshComponent* Mesh; 컴포넌트의 주소를 담을 포인터를 하나 만들어 줍니다. ClassOnly.cpp를 열어 다음과 같이 아래 2줄을 추가해주빈다. AClassOnly::AC.. C++ 퀵스타트 - 액터움직이기 SetActorLocation() 1 - 필수 프로젝트 구성 런처에서 언리얼 엔진 을 엽니다. 새 프로젝트를 생성하기 가 나타납니다. 새 프로젝트 탭을 클릭한 다음 C++ 탭을 선택합니다. 거기서 기본 코드 를 선택하여 깨끗한 시작점을 확보하고, "시작용 콘텐츠 포함" 설정되었는지 확인합니다. 프로젝트 이름을 지어줘야 하는데, 여기서는 "inflearn" 라 하겠습니다. 이제 프로젝트 생성 을 클릭하여 시작하면 됩니다. 이제 언리얼 에디터 가 새 프로젝트를 열 것입니다. Visual Studio 역시 프로젝트가 만든 솔루션 파일을 열어 로드할 것입니다. 2 - C++ 클래스 생성 언리얼 에디터 에서 File (파일) 드롭다운 메뉴의 New C++ Class... (새 C++ 클래스...) 명령으로 새 클래스를 만들 수 있습니다. 부모를 .. 충돌(Collision) 처리하기 콜리전 생성하기 BP_Bullet를 열어 Components +Add후 BoxCollision을 추가하고 이름을 BoxCollision으로 해줍니다. BoxCollision은 리전 처리를 위해서는 콜리전이 Root위치어야 합니다. DefaultSceneRoot위치로 드래그 해줍니다. Cube를 드래그해서 BoxCollision의 자식으로 넣어줍니다. 뷰포트에서 보면 Cube와 BoxCollision의 사이즈가 맞지 않습니다. Bullet Scale을 변경했기 때문입니다. Collision의 Shape>BoxExtent를 다음과 같이 변경해서 맞춰줍니다. 프로젝트 세팅스를 열어 Engine>Collision탭에서 Object Channels> New Object Channel을 클릭해 새채널을 추가합니다... 적 Enemy 만들기 이제 적을 만들어 보겠다 블루프린트 폴더에 +Add후 블루프린트클래스/액터/ 이름 BP_Enemy로 블루프린트폴더에 저장한다. BP_Enemy열고 컴포넌트 +Add Cube를 추가해준다. BP_Enemy 열고 My Blueprint탭에서 변수+ 클릭히 moveSpeed(Float)를 추가한뒤 컴파일후 디폴트값을 800으로 한다. BP_Bullet에서 이벤트그래프를 카피해서 복붙해준다. 잘보면 모든 노드의 Target이 self이기때문에 가능하다. 방향은 Enemy를 생성할때 변경할것이므로 여기서는 이대로 마친다. Enemy공장액터 제작하기 Enemy도 총알과 마찬가지로 레벨에서 생성한다. BP_EnemyFactory이름은 블루프린트클래스를 부모는 액터로 생성해준다. 이 블루프린트는 에너미만 생성하기 때문.. 총알 만들기 총알은 마우스 좌클릭을 하면 자동으로 생성되어 발사될것이다. 이후 자동으로 움직이게 된다. 유저의 키입력으로 움직이지 않으므로 부모클래스는 Pawn이 아니라 Actor면 충분하다. ContentDrawer를 열고 +Add를 눌러 Blueprint Class를 선택후 부모로 Actor를 선택한후 이름을 BP_Bullet로 Blueprints폴더에 저장한다. BP_Bullet를 열어 Add Component 버튼을 클릭하고 기본 외형(Base Shape)중에서 Cube를 선택하여 뷰포트에 끌어다 놓고 Scale을 다음과 같이 한다. EventGraph를 열어 다음과 같이 만들어 주고 컴파일 해준다. BP_Player와 비슷하다. 테스트를 위해 LevelEditor 뷰포트에 BP_Bullet를 배치하고 플레이.. Player만들기 컨텐트드러워의 +Add를 클릭하고 우클릭후 블루프린트클래스를->Pawn->이름을 BP_Player로 한후 Blueprints폴더에 저장합니다. Pawn은 Actor부모에 키입력을 받아 움직이게 해주는 메서드가 추가되어 있는 블루프린트 클래스 입니다. Character는 애니메이션도 추가된거구요. BP_Player를 클릭후 컴포넌트탭의 +Add를 눌러 Cube를 끌어다 놓습니다. 사용자 입력 바인딩하기 키보드액션을 액터와 연결하기 위해서 바인딩을 해야합니다. 프로젝트세팅의 왼쪽 Input탭을 선택합니다. Axis Mappings +를 클릭하고 이름을 Horizontal로 하고 A와 D를 등록하고 A의 Scale은 -1.0으로 해줍니다. 다시 Axis Mappings +를 클릭하고 이름을 Vertical로 .. 프로젝트 만들기 언리얼 Games Category에서 Blank를 선택하고 Starter Content를 선택하고 프로젝트 이름은 Shooting 만듭니다. 컨텐츠드로워 Contents폴더 아래 Maps와 Blueprints폴더를 만듭니다. File-New Level을 선택하고 템플릿은 Empty Level 템플릿을 선택합니다. MaiMap으로 이름을 바꾸고 Maps폴더에 저장합니다. 에디터가 실행될때나 앱으로 만들었을때 최초 실행할 레벨을 MainMap으로 설정하겠습니다. Project Settings에서 Maps&Modes항목을 선택후 Editor Startup과 GameDefault Map둘다 MainMap으로 설정합니다. Game Mode Base 제작하기 콘텐트드로워를 열어 Add+를 클릭후 블루프린트 클래스를.. 협업시 관리해야할 언리얼 엔진 4 디렉토리에 대하여 이번에는 언리얼 엔진 폴더 구조에 대해서 한번 알아보려고 합니다. 프로젝트 파일을 백업하거나, Git이나 SVN을 사용하여 협업을 할때 어떤 파일을 지우거나 한정하여 관리해야할지 막막했던 상황이 한번쯤은 다들 있으실것 같습니다. 이런 상황을 대처하기 위해서 언리얼 프로젝트 파일이 어떤 구조로 되어있는지 한번 살펴보도록 하겠습니다. ※ 언리얼 엔진 도큐먼트를 보면 여러가지 디렉토리가 있지만, 특별한 세팅없이 생기는 게임 프로젝트 디렉터리만 설명하겠습니다. 언리얼 엔진 디렉터리 구조 도큐먼트 : http://api.unrealengine.com/KOR/Engine/Basics/DirectoryStructure/index.html 깃이나 SVN, 퍼포스 같은 버전관리 툴로 디렉터리를 관리할때는 필수적인 파일만.. 이전 1 ··· 9 10 11 12 13 다음