본문 바로가기
반응형

분류 전체보기424

Unreal C++ CSV로 만든 데이터 DataTable로 가져오기 [Unreal/C++] CSV로 만든 데이터 DataTable로 가져오기 본 게시물에서는 Excel을 이용하여 애니메이션 정보를 가지고 있는 CSV 파일을 만들고 Unreal 임포트를 통해 DataTable로 변환하여 사용하며, 만들어진 DataTable을 C++ 코드로 불러오는 방법을 기술합니다. 애니메이션을 위한 CSV 파일을 준비합니다.A1 컬럼은 비워둡니다. 언리얼 엔진에서 파일을 import 할 때, 첫 번째 컬럼은 건너뛰어 버립니다.첫 번째 컬럼 값은 Row ID 를 나타내고 데이터 테이블에서 Row 를 구분하기 위해 필요합니다.Type과 Animation 등 RowName은 C++ 코드에서 struct 변수명으로 사용될 예정입니다.파일 -> 다른이름으로 저장 -> CSV (쉼표로저장) -> .. 2023. 11. 28.
Unreal C++ Widget 변수 사용하기 [Unreal/C++] Widget 변수 사용하기 1. UserWidget C++ 클래스 만들기2. UserWidget C++ 클래스 기반 블루프린트 만들기3. 팔레트에서 Widget 배치하기4. 변수 인지 체크하기5. 클래스에서 위젯 이름과 똑같은 변수 만들기6. 변수 사용하기 이 글에서는 UProgressBar 위젯을 만들고 변수로 가져와 값을 변경합니다. 위젯을 위한 UserWidget C++ 클래스를 만듭니다.콘텐츠 브라우저에서 위젯 블루프린트를 만들고 부모를 만들어진 클래스로 설정합니다.부모를 지정하지 못한경우 블루프린트 부모변경을 이용할 수 있습니다.오른쪽 상단에 부모 클래스를 확인하고 디자이너탭이 보이는지 확인합니다.C++ 클래스를 우클릭해서 기반 블루프린트를 생성한 경우 디자이너 탭이 보이.. 2023. 11. 26.
Unreal C++ LogBlueprint: Error: AssetLog .uasset: Compiler (에셋) 타입의 "AssetsName" 필수 위젯 바인딩을 찾지 못했습니다. [Unreal/C++] LogBlueprint: Error: [AssetLog] .uasset: [Compiler] (에셋) 타입의 "AssetsName" 필수 위젯 바인딩을 찾지 못했습니다.위젯의 변수와 C++ 변수의 이름이 맞지 않아서 생기는 에러에러를 발생시켜 로그를 확인하였습니다.LogBlueprint: Error: [AssetLog] F:\Projects\MainProject\Content\Characters\TwinBlast\Widgets\WBP_HelthPointBar.uasset: [Compiler] 프로그레스 바  타입의 "PB_HPBa" 필수 위젯 바인딩을 찾지 못했습니다. Fatal error! Unhandled Exception: EXCEPTION_ACCESS_VIOLATION wr.. 2023. 11. 26.
Unreal C++ CreateWidget과 AddToViewport() [Unreal/C++] CreateWidget과 AddToViewport() C++ 클래스 코드를 이용하여 화면에 Widget띄우기 1. 위젯 클래스 생성2. 위젯 클래스 기반 블루프린트 생성3. 위젯 디자인4. 코드 작성 먼저 UserWidget을 상속받는 C++ 클래스를 하나 만들어 줍니다.별다른 코드 없이 디자인 기능만 갖춘 위젯을 화면에 띄울 예정입니다. 콘텐츠 폴더에서 위젯 블루프린트를 하나 생성합니다.(클래스 우클릭 후 기반 블루프린트 만들기를 하면 디자이너 탭이 보이지 않는 문제가 있습니다.)생성한 클래스를 상속받아 위젯 블루프린트를 만듭니다.위젯 블루프린트의 접두사는 WBP로 시작합니다. 위젯 블루프린트를 디자인 합니다.똑같이 만들 필요는 없으며 캔버스 패널위에 이미지 하나만 올려두셔도 됩.. 2023. 11. 26.
Unreal C++ CreateWidget시 Fatal Error! [Unreal/C++] CreateWidget시 Fatal Error! 분명 코드를 잘 작성했는데 에러가 뜬다면CreateWidget이 생성자에서 사용되고 있는지 확인해봐야한다. CreateWidget과 AddToViewport()를 진행할 때 BeginPlay에 넣어보자. 2023. 11. 26.
Unreal 캐릭터 AimOffset 구현하기 [Unreal] 캐릭터 AimOffset 구현하기에임 오프셋은 캐릭터의 무기 조준시 도움이 되는 블렌딩가능 포즈 시리즈가 저장된 애셋입니다.여러가지 면에서 에임 오프셋은 BLend Space(블렌드 스페이스)와 똑같습니다. 캐릭터를 구현할 때 이동 기능과 회전 기능이 있다면 상향 가운데, 가운데, 하향 가운데 3개의 AimOffset만으로 충분합니다. 한 장소에 멈춰 있는 경우에만 9방향이나 15방향 AimOffset 기능 구현을 고려하는 것이 좋습니다. 준비1. 사용하려는 캐릭터의 스켈레탈 메시와 기본 애니메이션2. 에임 오프셋으로 만들 최소 9방향 애니메이션 본 글에서는 15방향 에임 오프셋을 제작할 예정입니다. 에임 오프셋은 애디티브 에임 타입의 메시 스페이스를 가진 애니메이션만 받습니다! 에임 오.. 2023. 11. 24.
Unreal 캐릭터 걷기, 뛰기, 전력질주 Blend Space 구현 [Unreal] 캐릭터 걷기, 뛰기, 전력질주 Blend Space 구현 블렌드 스페이스는 다수의 애니메이션 또는 포즈를 1차원 또는 2차원 그래프로 구성하여 블렌딩할 수 있는 에셋입니다. 그런 다음 게임플레이 입력 또는 다른 변수를 통해 블렌딩을 제어할 수 있는 애니메이션 블루프린트 내에서 이 그래프를 레퍼런스할 수 있습니다. 블렌드 스페이스를 사용하면 거의 모든 유형의 블렌딩 배열을 애니메이션에 사용할 수 있습니다. 프로젝트에 다양한 방향의 스켈레탈 메시(Skeletal Mesh) 또는 유사한 애니메이션 시퀀스(Animation Sequence) 를 임포트한 상태여야 합니다.블렌드 스페이스는 여러 포인트에서 그래프를 따라 애니메이션을 지정하는 에셋입니다. 이 포인트를 샘플(sample) 이라고 합니다.. 2023. 11. 22.
Unreal C++ UE Project Editor 크래시가 생겨 닫힐 것입니다. [Unreal/C++]  UE Project Editor 크래시가 생겨 닫힐 것입니다.Fatal error  C++로 작업하다보면 간혹 보이는 문제입니다.경험상 보통 null체크가 정상적으로 이뤄지지 않았거나 C++에서 수정한 내용이 에디터에 반영되지 않았을 경우 발생합니다. 첫째로 시도할 것은 에디터를 끄고 다시 실행하는 것입니다.두번째로는 C++의 잘못된 코드를 바로잡고 실행하는 것입니다. C++코드 중 어디에서 에러가 발생한지 모르겠다면프로젝트 폴더의 에디터 로그를 살펴보는 것이 좋습니다.로그를 확인할 수 있는 방법은ProjectFolder->Saved->Logs->에러가 발생한 시점의 text파일을 열어 확인하는 것 입니다. 보통 제일 하단에서 에러가 발생하므로 확인이 쉽습니다. Message d.. 2023. 11. 22.
Unreal C++ AnimInstance 구현 [Unreal/C++] AnimInstance 구현 AnimInstance를 상속받는 클래스 생성 코드 작성// MyAnimInstance.h#pragma once#include "CoreMinimal.h"#include "Animation/AnimInstance.h"#include "DefaultCharacterAnimInstance.generated.h"UCLASS()class MAINPROJECT_API UDefaultCharacterAnimInstance : public UAnimInstance{ GENERATED_BODY() // UAnimInstance에 작성된 BeginPlay와 update를 오버라이드public : virtual void NativeBeginPlay() override; .. 2023. 11. 22.
Unreal C++ 기본 캐릭터 움직임, 설정 구현 [Unreal/C++] 기본 캐릭터 움직임, 설정 구현 캐릭터에1. SpringArmComponent, CameraComponent를 추가한다.2. SkeletalMesh를 변경한다.3. 키보드의 W, S, A, D키를 받아 X, Y축 이동을 구현한다.4. 마우스의 움직임을 받아 카메라의 X,Y 축 회전을 구현한다. 먼저 캐릭터를 상속받는 클래스를 만든다.  생성시 기본 형태는 생성자와 BeginPlay, Tick, SetupPlayerInputComponent 함수가 있습니다.하단에 입력을 받을 함수와 컴포넌트 변수를 선언해줍니다.// MyCharacter.h#pragma once#include "CoreMinimal.h"#include "GameFramework/Character.h"#include .. 2023. 11. 22.
Unreal C++ DefaultPawnClass 변경 하기 [Unreal/C++] DefaultPawnClass 변경 하기 1. GameModeBase를 상속받는 클래스 생성2. 생성자에서 Pawn Class 가져오기3. DefaultPawnClass 지정 GameModeBase를 상속받는 클래스 생성코드 작성// MyGameModeBase.h에서는 별다른 작업이 필요 없다.// MyGameModeBase.cpp#include "MainProjectGameModeBase.h"#include "MyCharacter.h" // 내 클래스 가져오기AMyGameModeBase::AMyGameModeBase(){ // Character나 Actor나 Pawn을 상속받기 때문에 APawn으로 받아도 무관 ConstructorHelpers::FClassFinder pawn(.. 2023. 11. 22.
Unreal C++ 캐릭터 SkeletalMesh 변경하기 [Unreal/C++] 캐릭터 SkeletalMesh 변경하기 C++ 코드를 이용해서 캐릭터의 SkeletalMesh와  Location, Rotation을 변경 하겠습니다. 이 글에서는 SpringArm 과 Camera 컴포넌트를 포함하지 않습니다. 준비사항1. 캐릭터를 상속받는 C++ 클래스를2. 기본으로 지정하고자 하는 SkeletalMesh  // MyCharacter.h#pragma once#include "CoreMinimal.h"#include "GameFramework/Character.h"#include "MyCharacter.generated.h"UCLASS()class MAINPROJECT_API MyCharacter : public ACharacter{ GENERATED_BODY().. 2023. 11. 22.
반응형