| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
- TObjectPtr
- UE5
- 프로그래머스
- const
- C++
- Effective C++
- NRVO
- algorithm
- GeeksForGeeks
- 티스토리챌린지
- 2294
- Programmers
- 팰린드롬 만들기
- winapi
- UnrealEngine4
- 1563
- RootMotion
- softeer
- Unreal Engine5
- 오블완
- 줄 세우기
- baekjoon
- 백준
- IFileDialog
- 언리얼엔진5
- directx
- UnrealEngine5
- C
- RVO
- DirectX11
- Today
- Total
목록UnrealEngine5 (56)
Game Develop
나는 '공격'에 대한 정보를 아래와 같이 세분화시켜봤다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 struct FAttackInfoStruct { GENERATED_USTRUCT_BODY() // 언리얼 오브젝트임을 알리는 매크로 public: float damage; bool bIsDot; bool bHasCrowdControl; ECrowdControlType crowdControlType; // CC기 종류 float crowdControlTime; // CC기 지속시간 bool bHasKnockBack; float knockBackTime; // 경직시간 -> 피격체의 힛트모션 재생시간과 대응 float knockBackDistance; // 밀려지는 정도 }; Colored b..
그냥 FString을 역참조해주면 된다. FString은 내부적으로 TArray 타입을 멤버변수로 가진 상태에서 관리하기 때문이다. F12로 정의찍다보면 역참조연산자(*)가 const TChar* 리턴된다고 코드가 작성되어있다. 메쉬나 애님인스턴스 로드할 때 경로를 매개변수로 넘겨줘서 로드하게 하려다보니까 알게 됐다. 보통 아래같이 문자열리터럴을 TEXT 매크로를 통해 const TChar*로 변환시켜서 넘긴다. 1 2 3 4 5 6 7 8 9 static ConstructorHelpers::FObjectFinder tempMesh(TEXT("에셋경로")); if (tempMesh.Succeeded()) { GetMesh()->SetSkeletalMesh(tempMesh.Object); GetMesh()..
블루프린트파일 같은거 다루다보면 가끔씩 디테일패널같은게 사라져서 안보이는 경우가 있다. 분명 상단의 Window탭을 누르면 Details에 표시가 되어있는데 안보인다. 에디터를 껐다켜도 안되고 블루프린트파일을 삭제했다가 재생성해도 해결되지 않을 경우, 아래와 같이 하면 된다. 아주 간단하다. 마찬가지로 Window탭을 누르고 최하단쪽 보면 'Load Layout'이 있고, 마우스를 갖다대면 'Default Editor Layout'이 있다. 이거 누르면 다시 잘 보인다..
예를들어 캐릭터의 전투여부에 따라 Idle모션이 바뀐다고 가정. 애님인스턴스 c++파일에서는 캐릭터클래스를 TryGetPawnOwner로 받아와서 애님인스턴스클래스자체에서도 bool IsCombat을 계속 업데이트하게 해놨다. 입문자를 위한 책예제에서는 전부 블루프린트에서 하게 해놨는데, 일단 블루프린트와 C++성능 차이가 꽤 있다는 것을 인지하고 있었기 때문에 틱마다 수행하는 이런 간단한 값업데이트정도는 C++로 하는게 맞다고 판단했다. 사실 일단은 규모가 작기 때문에 현재를 기준으로 치면 블루프린트로 처리하든 C++코드로 처리하든 별 의미는 없다. 다만, 어차피 결국 커지기 마련이고 최대한 코드로 처리할 수 있는 부분은 코드로 처리하는게 맞는 것 같다. 실제로 이렇게하니까 아래와 같이 에디터자체에서도..
나같은 경우 플레이어캐릭터의 애니메이션 이벤트그래프는 일단 c++코드로 작성하고 애님그래프쪽만 블루프린트로 처리 해보려 한다. 일단은 이벤트그래프쪽은 c++코드로 처리하려고는 하는데 언제 어떻게 비중이 바뀔지는 아직 모르긴한다.. 어쨌든 AnimInstance 클래스에 아래와 같이 플레이어캐릭터 포인터 변수를 선언해주었다. class AMainPlayer* m_MainPlayer; 하지만 그냥 C++로만 하듯이 이렇게 선언해서 사용하면 안된다. 언리얼엔진에는 가비지컬렉터가 존재한다는것을 반드시 인지하고 있어야 한다. 언리얼 엔진의 가비지컬렉터에 관한 내용은 매우 방대하기 때문에 전부를 다루는것은 어렵고, 개발하면서 부딪치는 문제를 해결할 때마다 관련 경험에 대한 글을 반드시 작성하는게 좋을 것 같다. (..
목적에 맞게 파일이나 폴더를 정리하려 할 때, 임의로 윈도우 탐색기에서 막 위치를 조정하면 안된다. 아마 조정 후, 프로젝트 오픈하는 중에도 바로 에러메시지가 발생할 것이고 플레이도 안될 것이다. 반드시 에디터 내에서 파일이나 폴더의 이동,복사를 수행하는게 좋다. https://www.youtube.com/watch?v=f2o9aGC96lk 만약 언리얼엔진을 시작하려한다면 반드시 이 영상이라던가 관련 내용에대해 충분히 숙지하는 걸 추천한다. 에디터내에서 파일의 조작이 수행되어야 에디터가 변경된 경로를 인식할 수 있다. 이런 에셋들뿐만아니라 cpp파일 같은 경우도 삭제라던가 경로가 변경되면 다시 Generate해줘야 하니 반드시 관련 내용에 대해 숙지하자. 미리미리 알면 그래도 운 좋은 편이다..
C++코드 이것저것 시험하다가 한번 에디터 껐다 켰는데, 프로젝트를 여는 도중에 75%에서 더이상 진행이 안되는 현상이 발생했었다. 작업관리자에서 확인해보니 아예 CPU할당이 0%이길래 바로 관련해서 구글링을 하며 관련 해결글을 찾아봤다. 이것저것 찾아본 결과, 일단 내가 생성한 블루프린트파일을 하나씩 삭제하면서 에디터를 켜보기로 했다. 결과적으로 플레이어캐릭터에 관한 CPP파일을 상속받는 블루프린트파일을 삭제하고 프로젝트를 열었더니 다행히 잘 열리긴 했다. 그러나 기존처럼 똑같이 셋팅하고 언리얼에디터를 껐다키면 마찬가지로 75%에서 멈췄다. 약간 여기서 C++코드에 문제가 있지 않나...라는 생각이 들었다. 아래는 메인플레이어캐릭터의 생성자 코드이다. 1 2 3 4 5 6 7 8 9 10 11 12 1..
https://velog.io/@starkshn/%EC%A0%84%EB%B0%A9%EC%84%A0%EC%96%B8 전방선언 스택이건 힙이건 관련 없이이렇게해서 빌드를 하면 통과를 한다.Player의 설계가 완성이 되었다는 것이다.이런식으로 메모리에 Player를 올리기위해서 가장 중요한 부분은이 Player의 크기가 몇 바 velog.io 요약 : A클래스에서 B클래스를 헤더파일에서 인클루드하는식으로 해서 종속성이 생길 경우, B클래스에 변경이 있을경우 A도 아예 다시 빌드해야 한다. 이게 서로 서로 맞물리다보면 다시 빌드해야하는 파일들이 굉장히 많아지므로 빌드시간이 굉장히 오래 걸린다. 그래서 디폴트로 전방선언을 한다고 생각하고, 어쩔수없는 경우에만 헤더파일에서 인클루드한다.