게임엔진

    [Unreal] 애님 블프 Idle 애니메이션 무작위 실행

    언리얼에선 Random Sequence Player 함수가 존재하며 배열 범위 안에 무작위 인덱스 값을 뽑아준다. 일단 3개를 추가해줬다 마지막으로 shuffle mode 칸이 체크가 되어있어야 한다

    [Unreal] C++ error C2018 : '' 문자를 인식할 수 없습니다 오류 해결

    아래와 같이 한글로 작성할 시 여러 오류가 뜨는데 이는 컴파일러가 한글을 인식못해서 발생하는 오류다 고급 저장 옵션에서 UTF-8로 변경해야 오류를 쉽게 해결할 수 있다, 만약에 파일 탭 클릭 후 보이지가 않는다면 아래 방법을 통해 설정하면 된다 UTF-8로 변경 후 빌드가 제대로 되는 모습이다

    [Unreal] C++ 변환할 수 없습니다 오류 해결

    SetRootComponent(GetCapsuleComponent()); UCapsuleComponent 뿐만 아니라 다른 컴포넌트들을 인식 못하기 때문에 발생하는 오류이다. 해당 컴포넌트 헤더파일을 추가해주면 된다 #include "Components/CapsuleComponent.h"

    [Unity] DOTS: Jobs, Burst, ECS 간단 정리

    DOTS: 데이터 지향 기술 스택 DOTS는 데이터 지향 구현을 돕는 기술들을 지칭하는 용어 데이터 지향 설계(DOD)를 통해 메모리 사용성 향상 → 성능 극적 향상 Unity의 DOTS: Job System, Burst Compiler, ECS 각각의 기술들이 독립적이기 때문에 셋을 반드시 함께 사용해야 할 필요는 없다. 즉, Jobs, Burst 없이 ECS를 사용할 수 있고, ECS 없이 Jobs, Burst를 사용할 수 있다. 그저 이 세 가지가 DOD 관점에서 궁합이 아주 좋기 때문에 다같이 사용하기를 권장하는 것이다. - Job System : 멀티스레딩 여러 작업을 Job이라는 단위로 나눠 여러 스레드에 할당해주는 시스템. 데이터 지향으로 설계되어 있는 경우에 Job을 스레드에 할당하는 작업..

    [Unity] ThreadPool (스레드풀)

    스레드를 사용하기 위해선 다음과 같이 선언 해줘야한다. using System.Threading; 스레드 선언하기 Thread t = new Thread(MainTread); 스레드를 사용하기 위해 다음과 같이 스레드 생성자를 만든다. 넘겨주는 MainTread 함수 또한 생성한다. static void MainTread(object state) { Console.WriteLine("Hello Thread!"); } 기본 스레드는 foreground에서 실행되는 형태이다. 스레드의 이름을 설정하고 싶으면 Name 을 활용한다. static void Main(string[] args) { Thread t = new Thread(MainTread); t.Name = "Test Thread"; //이름을 설정..

    [Unity] Flow Free 게임 카피캣 만들기

    UI 관한 로직 - UIManager.cs using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.SceneManagement; public class UI_Manager : SingletonLocal { public GameUI GameUI_Obj; public ResultUI ResultUI_Obj; int mLayer; bool isCreatedResUI = false; // 파이프 UI 용도 public Canvas pipeUI_CanvasPrefab = null; Canv..

    [Unreal] Reflection (리플렉션)

    언리얼은 UHT(Unreal Header Tool) 을 이용해 클래스 계층 구조, 멤버 변수/함수 등의 정보를 UClass 에 저장한다. 이를 리플렉션이라고도 하고, 프로퍼티 시스템이라고도 부른다. 리플리케이션 시스템은 부가 기능으로, 리플렉션 시스템에 보이도록 했으면 하는 유형이나 프로퍼티에 주석을 달아두면 UHT 가 컴파일시 해당 정보를 수집하게 된다. 프로퍼티 시스템 계층 구조는 아래와 같다. (UField 아래에 UStruct, UEnum, UProperty 가 있음) #include "MyObject.generated.h" UCLASS(Blueprintable) class UMyObject : public UObject { GENERATED_BODY() public: MyUObject(); UP..

    [Unreal] 비동기 에셋 로딩

    UE4에서 애셋 비동기 로딩을 쉽게 하기 위한 신규시스템이 도입되었다. 데이터 로드 및 참조에 사용되는 방법은 일반적으로 두가지가 있다. FSoftObectPath와 TSoftObjectPtr FSoftObjectPath는 애셋의 전체이름이 저장된 스트링이있는 구조체이다. 애셋의 참조 정보와 생성 메소드들을 포함한다. 에디터에서는 UObject처럼 표시된다. TSoftObjectPtr은 FsoftObjectPath를 감싸는 TWeakObjectPtr 이다. 에디터 UI에서 특정 클래스만 선택되게끔 제한하도록 하는 역할. 블루프린트에서 애셋의 SoftReference로 표시 애셋 레지스트리와 오브젝트 라이브러리 애셋 레지스트리는 애셋에 대한 메타데이터를 저장하여, 검색 및 질의를 가능하게 한다. 에디터에서..

    [Unreal] 엔진에서 제공하는 데미지 라이브러리

    데미지를 주는 함수의 종류 ApplyDamage : 기본적인 데미지 함수. ApplyPointDamage : 데미지를 주는 위치의 정보도 얻어올 수 있는 데미지 함수. (어디서 데미지를 주었는지.) ApplyRadialDamage : 범위 데미지를 줄 때 사용. (Origin으로부터 Radius만큼 데미지를 뿌린다.라는 느낌.) 데미지를 받는 함수의 종류 블루프린트 : AnyDamage 노드, PointDamage 노드, RadialDamage 노드. (쓰기 쉬우라고 구분되어 있음.) C++ : Actor 클래스의 TakeDamage 함수 오버라이딩. (함수 내에서 구분해서 처리함.) float ACPP_Player::TakeDamage(float DamageAmount, FDamageEvent cons..

    [Unreal] 미니맵 및 캐릭터 위치 표시

    화살표 스프라이트 세팅 우선 화살표 스프라이트를 준비해준다, 구글에서 대충 이미지를 다운로드 받아 폴더에 드래그 앤 드롭해주면 Texture 형태로 로딩될텐데 그 후 우클릭 > Paper2D > Sprite 눌러서 생성해준 후 아래 부분을 세팅한다. 세 가지의 컴포넌트가 필요하다 SpringArmComponent PaperSpriteComponent USceneCaptureComponent2D C++로 추가해줬다 .h 파일에 추가 UPROPERTY(EditAnywhere, Category = Minimap) USpringArmComponent* SpringArm; UPROPERTY(EditAnywhere, Category = Minimap) USceneCaptureComponent2D* SceneCapt..