목록분류 전체보기 (189)
안선생의 개발 블로그
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Pvfwx/btsMffK92db/tajkGT0cA6MhihpUDDKkt0/img.png)
언리얼 엔진에서 동적으로 머티리얼을 변경하는 방법게임 내에서 캐릭터의 외형을 동적으로 변경할 수 있는 기능은 몰입감을 높이고 플레이어의 경험을 향상시키는 중요한 요소입니다. 예를 들어, 피로도에 따른 외형 변화, 기분에 따른 표정 변화, 날씨나 환경에 따른 의상 변화 등을 통해 게임의 현실감을 더할 수 있습니다. 이러한 동적인 외형 변화는 언리얼 엔진에서 머티리얼을 동적으로 조작하여 쉽게 구현할 수 있습니다. 오늘은 SetCustomPrimitiveDataFloat 함수를 활용하여 머티리얼을 동적으로 변경하는 방법과, 또 다른 방법인 다이나믹 머티리얼을 활용하는 방법에 대해 설명하겠습니다. 1. SetCustomPrimitiveDataFloat 함수 사용하기CustomPrimitiveData란?Custo..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b2SlJe/btsMbxLiBaw/KU2kABflCG49IjyWnTNiF1/img.png)
Common Ui로 활성화 위젯을 만들고 Main Stack을 배채 했더니 마우스 인풋만 안 먹는 버그가 있다.. 그럴땐 최상단 레이어에 들어와서 Supports Activation Focus를 false로 해주고,그래도 안된다면 인풋모드를 GameAndUI로 바꿔주면 해결된다.Supports Activation Focus가 위젯을 포커스 둬서 마우스 인풋을 막는거같음
언리얼에서는 커스텀 로그 만들기는 아주 간단하다. 먼저 아무것도 없는 클래스를 하나 만들어줘서 아래와 같이 헤더파일과 매크로를 선언한다.// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "Containers/UnrealString.h"#include "Logging/LogMacros.h"DECLARE_LOG_CATEGORY_EXTERN(JHlog,Log,All); 매크로를 열어보면 extern struct FLogCategoryJHlog : public FLogCategory { FORCEINLINE FLogCategoryJHlog() : FLogCategory(TEXT("J..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bP4Cws/btsKJBnEGsI/kz8OLJ9wb3y9odDsqnjenK/img.png)
1. 모듈(Module)하나의 cpp 헤더를 포함하는 단위이며 언리얼 반드시 하나의 모듈이 존재해야함 엔진코드를 보면 폴더가 다 모듈이라고 볼 수 있음 저 모듈을 사용할라면 bulid.cs파일에 추가해줘야함 특징:엔진 또는 프로젝트의 기능을 기능별로 나눠둔 코드 덩어리프로젝트의 코드가 빌드될 때 함께 컴파일됨특정 기능에 대해 독립적 코드 관리가 가능하며, 다른 모듈들과 상호작용 가능 하나 모듈이 필요하므로 시작할때 기본 헤더,cpp를 만들어주는데 // Copyright Epic Games, Inc. All Rights Reserved.#include "testgame.h"#include "Modules/ModuleManager.h"IMPLEMENT_PRIMARY_GAME_MODULE( FDefaul..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bdEGRl/btsJbhjQLET/ylvGinOlGHBl5jd8saMGL0/img.png)
하드 참조 (Hard Reference)직접 참조: 하드 참조는 리소스를 직접 참조하는 방식입니다. 예를 들어, 특정 오브젝트나 액터에 대해 하드 참조를 사용하면, 그 오브젝트가 필요할 때마다 언리얼 엔진은 해당 오브젝트를 메모리에 항상 로드해 둡니다.메모리 사용: 하드 참조는 메모리에 상주하게 되므로, 큰 오브젝트나 많은 리소스를 하드 참조할 경우 메모리 사용량이 증가할 수 있습니다.로드 타임: 하드 참조된 오브젝트는 게임이 시작되거나 해당 오브젝트가 필요할 때 미리 로드되기 때문에, 필요할 때 바로 사용할 수 있지만, 초기 로드 시간은 길어질 수 있습니다.소프트 참조 (Soft Reference)참고로, 소프트 참조는 필요할 때만 리소스를 로드하는 방식으로, 메모리 관리에 유리하지만, 처음 접근할 때..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bZge2s/btsIUvQjFfm/VCgsuEvbKhCsflLekr2Bg1/img.png)
먼저 웹서버에서 스웨거 주소가 필요하다. 스웨거란 쉽게 말해 API 테스트 하기위한 사이트이다. 스웨거에서 로그인을 연결할려고 한다.위에 보시다시피 RequestBody 필요한 매개변수는 4개 의므로 클라쪽에서도 4개의 매개변수를 받는 함수를 만들어줘야 한다.Curl쪽을 보면 저렇게 보내면 된다.Curl이란다양한 프로토콜을 지원하는 데이터 전송용 Command Line Tool이다.(HTTP, HTTPS, FTP, SFTP, SMTP 등을 지원한다.)void UWebAPISubsystem::ReqLoginUser(const FString& Email, const FString& Password){ UE_LOG(LogTemp, Log, TEXT("LoginUser")); TSharedRef Re..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lDuFC/btsGfKhaLBY/pcnvwVFrW8YK2fFBsSAXW0/img.png)
설계 개념에서 decorator는 원래 어떤 기능을 하던 모듈은 고치지 않고 그대로 둔 채로 그 모듈을 감싸서 어떤 기능을 추가하는 것을 말합니다. 언리얼 엔진에서의 decorator도 같은 개념인데, Decorator는 Behavior Tree에서 각 task에 붙어서 task가 할 일을 더 추가해 주는 일을 합니다. 그리고 decorator가 task에 붙지만 composite에도 붙습니다. 언리얼 엔진에서 decorator는 주로 이 노드(task나 compositr)가 실행될지 말지를 체크하는 역할을 합니다. 그래서 한 노드에 서비스, 태스크, 데코레이터가 모두 들어가 있다면 데코레이터, 서비스, 태스크 순으로 실행됩니다. 데코레이터에서 거절하면 그 노드는 아예 실행이 안 됨 만약 composit..
전역 C++ 함수 : BindStatic API를 사용해 등록 전역 C++ 람다 함수 : BindLambda API를 사용해 등록 C++클래스 멤버 함수 : BindRaw API를 사용해 등록 공유포인터 클래스의 멤버 함수 (쓰레드 미지원) : BindSP API를 사용해 등록 공유포인터 클래스의 멤버 함수 (쓰레드 지원) : BindThreadSafeSP API를 사용해 등록 UFUNCTION 멤버 함수 : BindUFunction API를 사용해 등록 언리얼 오브젝트의 멤버함수 : BindUObject API를 사용해 등록 위 API 목록 중에서 우리가 바인딩하려는 RequestTokenComplete 함수는 언리얼 오브젝트 ABGameInstance의 멤버 함수 이므로, CreateUObject를 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/exNkUZ/btsFWlcrswL/kbqhF8JrJpQj1ATTjgI3Bk/img.png)
Behavior Tree - Service? Service는 Behavior Tree에서 각 task나 composite에 붙여 사용하는데, task가 실행되기 전에 먼저 실행되어 blackboard에서 값을 읽어 각 task에 값을 공급하는 등의 역할 또한 Service란 이름처럼 task나 composite가 실행되는 동안에 주기적으로 동작을 반복수행합니다. 서비스는 주로 Behavior Tree의 특정 상태에서 AI 캐릭터의 상태를 모니터링하거나 업데이트하는 데 사용됩니다. 예를 들어, 캐릭터가 특정 위치로 이동하도록 지시하는 행동 트리가 있다고 가정해 보겠습니다. 이동 중에 캐릭터의 위치를 계속 확인하고 목표 위치에 도달했는지 확인하려면 서비스를 사용하여 이러한 동작을 주기적으로 실행할 수 있습니..