일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 디지털회로설계
- 반도체기초교육
- 자습포스팅
- 개인스터디
- SoC설계
- 반도체소자교육
- 언리얼엔진4
- 반도체물성
- SK하이닉스
- 하이포2기
- 자습
- diode
- 게임개발
- 베르의게임개발유튜브
- UnrealEngine4
- pn junction
- Rectifier
- 전자공학부
- 다이오드
- ASIC설계
- 물리전자
- UE4
- 자습목적포스팅
- 베르
- 전자회로
- 참고
- 반도체공정교육
- 전자공학
- 반도체교육
- 회로개발
- Today
- Total
호경
Unreal Engine 4 : (3) C++ 함수 선언 및 구현해보기 본문
시작에 앞서...
학부 연구생으로 활동하고 있는 도중에
교수님께 새로운 IC-PBL 강좌로 언리얼 엔진 관련해서 개설한다고 하셨다.
이전부터 게임 개발 관련해서도 관심이 많았었는데, 이번 기회에 언리얼 엔진에 대해 제대로 배울 수 있을 것 같아, 강의 개설에 참여한다고 말씀드렸다.
블로그에서 다룰 툴은 언리얼 엔진 4이며,
모든 내용은 유튜브 채널 "베르의 게임 개발 유튜브"에서 참고했다.
https://www.youtube.com/channel/UC9j37A2ACL9ooSbsT4mtGww/featured : 베르의 게임 개발 유튜브
목차
- 유튜브 강의 노트 정리
- C++로 함수 구현해보기
유튜브 강의 노트 정리
"베르의 게임 개발 유튜브"에서 크리에이터 "베르"님이 얘기하시는 내용 중
C++과 블루프린트의 상호작용에 의해서 더욱더 효율적인 게임 개발을 할 수 있다고 하셨다.
C++개발자가 코드를 짜게 되면 그 코드를 기반으로 해 디자이너들이 블루프린트를 디자인한다고 하셨다.
C는 익숙해서 다루기가 쉽지만 C++은 아직 익숙치 않아서 강좌 중 입문편에서 함수 선언에 대해 나와 있어
그 부분을 오늘은 포스팅 하겠다.
C++로 함수 구현해보기
먼저, 헤더 파일은 다음과 같이 작성했다.(수정 부분만 추가, 같은 부분은 포스팅하지 않음)
public:
// Sets default values for this actor's properties
AMyActor1();
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Damage")
int32 TotalDamage; //32비트 int형 TotalDamage 변수
UPROPERTY(EditAnyWhere, BlueprintReadWrite, Category = "Damage")
float DamageTimeInSeconds; //float형 DamageTimeInSeconds 변수
UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Transient, Category = "Damage")
float DamagePerSeconds; //float형 DamagePerSeconds 변수
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
void CalculateDamagePerSeconds();
virtual void PostInitProperties() override;
virtual void PostEditChangeProperty(FPropertyChangedEvent & PropertyChangedEvent) override;
다음으로 소스파일은 다음과 같이 작성했다.(수정 부분만 추가, 같은 부분은 포스팅 하지 않음)
void AMyActor1::CalculateDamagePerSeconds()
{
DamagePerSeconds = TotalDamage / DamageTimeInSeconds;
}
void AMyActor1::PostInitProperties()
{
Super::PostInitProperties();
CalculateDamagePerSeconds();
}
void AMyActor1::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent)
{
CalculateDamagePerSeconds();
Super::PostEditChangeProperty(PropertyChangedEvent);
}
코드를 적기 전에 '언리얼 엔진'만에서 쓰는 각종 함수에 대해서 조금 정리하고자 한다.
물론 정리 노트에다가도 적긴 했지만 조금 더 쉬운 이해를 위해 한 번 더 정리하려고 한다.
코드에서 PostInitProperties와 PostEditChangeProperty라는 함수가 등장하는데,
새롭게 작성해준 함수를 발동시키기 위해서는
void AMyActor1::CacultateDamagePerSecond
{
DamagePerSeconds = TotalDamage / DamageTimeInSeconds;
}
해당 함수가 자동으로 불러오는 시점이 있어야 하는데
해당 시점이 되는 상황은 TotalDamage 혹은 DamageTimeInSeconds가 변화되는 순간의 시점이 될 것이다.
언리얼엔진에서는 PostInitProperties와 PostEditChangeProperty라는 함수를 통해 프로퍼티가 초기화 또는 수정될 때 해당 함수가 호출되도록 만들 수 있다.
따라서 컴파일 한 후, MyActor1을 월드에 배치해 주고, TotalDamage와 DamageTimeInSeconds를 수정해주면 다음과 같이 변화되는 것을 확인할 수 있다.
먼저 Total Damage 값을 변경해 보겠다.
다음으로 Damage Time In Seconds 값을 변경해 보겠다.
이와 같이 값을 입력해 주는 시점에 바로 Damage Per Seconds가 변화하는 것을 확인할 수 있다.
마치며...
앞으로, 기초적인 자습 내용은 "베르"님 유튜브를 참고하면서 할 예정이며, 포스팅 할 예정이다.
더 나아가 자신만의 게임을 만들어 보는 것을 개인 프로젝트로 해볼 것이며,
IC-PBL 강좌 개설 때는 VR/AR과 연동하실 계획이시라고 하니, 그 부분에 대해서도 자습 후 포스팅 할 예정이다.
졸업 작품도 이 쪽으로 해보면 굉장한 경험이 될 것이라고 생각한다.
'캡스톤 졸업작품 > 언리얼 엔진 4' 카테고리의 다른 글
[캡스톤 디자인] VR게임 제작하기 - VR Pawn 만들기 (0) | 2023.01.06 |
---|---|
Unreal Engine 4 : (4) C++에서 구현한 함수를 블루 프린트로 구현하기 (0) | 2022.03.03 |
Unreal Engine 4 : (2) 변수, 접근지정자, 프로퍼티, 생성자 (0) | 2022.03.02 |
Unreal Engine 4 : (1) 기본 개념 (0) | 2022.03.01 |
Unreal Engine 4 : 카메라 이동 (0) | 2022.02.27 |