2026-02-25(수)

조범근·2026년 2월 25일

TIL

목록 보기
3/25

배운 것만 사용해서 어떻게든 풀어보려고 했는데, 1시간 붙잡고 포기했다.
답지를 보니 오늘 배우지않은 Get(a copy), SetArrayElem에서 배열 가져오기와 Split structre pin으로 연결점에 배열을 나열해야하는 것이 빠져있었음.
또 그냥 과제대로만 했어도 된 것을 상상속의 총을 만들다 보니까 배운걸로만은 표현을 못 하겠다 싶어서 그만뒀다. 이것때문에 오늘 시간 낭비를 참 많이했음.

Blueprint?

블루프린트(Blueprint)란 언리얼 엔진에서 제공하는 비주얼 스크립팅 시스템.

복잡한 코드 작성없이, 노드 기반의 블럭을 연결해서 프로그래밍이 가능하게 하는 시스템.
현업에서는 프로토타입 구현 혹은 아트 및 기획자 팀원들이 컨텐츠 구현시 사용.
Unreal C++를 사용한다 해도 타 직군과의 협업에서는 블루프린트를 만날 수 밖에 없음

이벤트 함수와 Print String()함수

Event BeginPlay : "게임시작"하면 호출되는 함수
Event Tick : 매 게임 프레임마다 호출되는 함수

Print String(), Print Text() 둘다 뭐가 다른지 모르겠음
제미나이피셜 String은 개발단계에서만 보이고 Text는 둘다 보인다는 것 같은데 아직 잘 모름

변수

  • 부울(Boolean) : 참/거짓 두 가지 상태만 가짐
  • 바이트(Byte) : 정수. 가장 크기가 작음(0~255)
  • 인티저(Integer) : 정수. 일반적인 정수(-21억~21억)
  • 인티저64(Integer64) : 정수. 가장 크기가 큼
  • 플로트(Float) : 실수. 정밀도가 더 우월함(double-precision)
  • 이름(Name) : 문자열. 엔진 내부에서 사용, 불변인 경우
  • 스트링(String) : 문자열. 일반적인 문자열 (ex. 플레이어명)
  • 텍스트(Text) : 문자열. 퀘스트 설명같이 다국어 변환이 필요한 경우

비교/논리 연산 노드

이것도 AND, OR, NOT, XOR 연산자가 있는데

중요한건 위 핀과 아래핀이 A, B로 나누어져 있다.
만약 > 부등호를 쓴다면 위 핀이 A, 아래 핀이 B 니까 A > B 이다.

Branch와 Sequence


Branch는 if-else 조건문과 동일함.

Sequence는 길게 늘어진 노드들을 정리할 수 있는 노드

입력 관련 이벤트 함수


마우스 왼쪽 클릭


이렇다는데 클릭(Pressed), 마우스 떼기(Released)인데 홀드는 잘 모르겠음


KeyboardEvents R 이런식으로 R자리에 다른 키보드 자리 입력하면 다른 것도 나옴

1번 과제: 텍스트 슈팅 게임 버그 고치기


어려운건 아니였지만 내가 만든 상상 속의 총이 날 괴롭혀서 오래걸렸다.

조건

2번 과제: 텍스트 슈팅 게임 기능 추가하기

조건

함수


SetTemperature함수의 디테일에서 만질 수 있는 In Increment이 값 수정에 따라 유동적으로 변할 수 있어서 편한거 같음

Array와 ForEach Loop

Array

여기서부터는 설명도 많이 없어서 모르겠는 부분은 제미나이랑 같이 고민해서 이해했다.

ForEach Loop

이렇게 실행하면 Weapons 배열에 Index (0)부터 2까지 순서대로나옴

열거형(Enum)과 구조체 그리고 Switch

열거형(Enum)



이렇게 설정하고 여기서 알아야 할 것은

이렇게 관전 포인트 2개를 이해하고 넘어가야한다고 생각했지만 말을 너무 어렵게해서 제미나이랑 상의한 결과 일단 1번은.
처음 설정한 string 자료형으로 HeatState를 설정하면 문자에서 다시 숫자로 바꿔야 한다
하지만 Enum 자료형을 만들어서 바꿔주면 문자가 정수로 0, 1, 2 번으로 처리 되기때문에 최적화가 된다는 것이다.
모든 것에서 최적화가 중요하다 하는데 솔직히 지금 당장은 배운 것도 없어서 체감은 안되지만 최적화가 이렇게 많이 나오는 것 보면 프로그래머란 최적화를 하기위한 직업이 아닌가 싶다.
2번은 그냥 이해했음

Switch

Switch 노드를 가져오려면, Switch on + Enum 자료형 이름을 검색해야함

구조체(Structure)

전에 배열 공부 안했으면 받아들이기 어려웠을듯 싶은 어려운 구조체다.




3번 과제:텍스트 슈팅 게임 무기 추가하기

제일 미칠 것 같았던 설명도 제일 없고 배운 것만 사용해서는 절 대 못푸는

조건



이렇게 풀었는데 Get(a copy), SetArrayElem, Split structre pin 이거 모르면 절대 못 완성함

Q&A 목록

Q1. SetArrayElem 이거 연결 안하면 초기화인가??

A1. SetArrayElem에 있는 값으로 초기화된다

Q2. SetTemperature 함수에 뒤에 SET 부분 굳이 SetArrayElem을 써야하나? 그냥 두면 안되나?

A2. 총을 바꾸는 과정에서 Temperature가 계속 초기화 되기 때문에 각각 Weapons마다 Temperature를 계속 유지하고 싶으면 바꿔줘야함.

C

전에 배운 C++랑 겹치는 부분이 많아서 복습하는 느낌이라 좋았다.

if else문

if (조건식)
{
	명령어1; // 조건식이 참이면 여기가 실행됩니다.
	...
}
else
{
	명령어2; // 조건식이 거짓이면 여기가 실행됩니다.
	...
}

else문 단독으로 사용 불가능

if-else if-else문

if (조건식1)
{
	명령어1; // 조건식1이 참이라면 명령어1부터 수행.
	...
}
else if (조건식2) // 조건식1이 거짓이라면 조건식2 검사.
{
	명령어2; // 조건식2가 참이라면 명령어2부터 수행.
	...
}
else
{
	명령어3; // 조건식1도 거짓이고, 조건식2도 거짓이라면 명령어3 수행.
	...
}

while문

while (조건식)
{
명령어1;
...
}

기본 골자

// Main.c

#include <stdio.h>

int main(void)
{
	int i = 1;

	while (i < 5)
	{
		printf("%d ", i);

		++i;
	}

	return 0;
}

누적합, 누적곱, 최대값, 최소값을 만들 수 있는데 예시로 하나씩만 적으면 다음부터 설명 또 안해도 된다

누적합

// Main.c

#include <stdio.h>

int main(void)
{
	int i = 1;
	int num;
	int sum;

	scanf_s("%d", &sum);

	while (i < 5)
	{
		scanf_s("%d", &num);

		sum = sum + num;
		++i;
	}
	printf("sum: %d", sum);
}

튜터님과 다르게 풀은 이유는 다음 최대값에서 말하겠다.

최대값

// Main.c

#include <stdio.h>

int main(void)
{
	int i = 1;
	int num;
	int max;

	scanf_s("%d", &max);

	while (i < 5)
	{
		scanf_s("%d", &num);
		if (max < num)
		{
			max = num;
		}
		++i;
	}
	printf("max: %d", max);
}

튜터님은 값을 초기화해야 쓸 수 있다는 것을 알려주기 위해 sum=0; 으로 하고 시작하셨지만,
이렇게하면 최대값이 모두 음수일때 가장 큰 값인 0이 나오게 된다 그래서 int의 최솟값으로 설정을 해야하지만 그거 언제 일일히 함.
최솟값, 최댓값을 쉽게 쓰는 방법도 나중에 쓸 곳이 있어서 알려주셨겠지만
지금은 이게 더 편한듯

for문

for (초기식; 조건식; 증감식)
{
명령어1;
...
}

// Main.c

#include <stdio.h>

int main(void)
{
	int i;

	for (i = 1; i < 5; ++i)
	{
		printf("%d ", i);
	}

	return 0;
}

이것도 최댓값, 누적합 다 똑같이 구하면댐

break

반복문이나 switch-case문에서 탈출 할 때 break 구문을 사용합니다.
해당 스코프에서만 탈출됩니다. 다중 반복문 전체를 다 탈출하는게 아님에 주의합시다.

while (1)
{
	while (2)
	{
		break; // while (2) 반복문만 탈출됨.
	}
}

continue와 break의 차이점

반복문에서 continue 구문을 만나면 해당 회차는 건너뛰고 다음 회차 진행합니다.
반복문을 아에 탈출하는 게 아닌 특정 순회 번째만 무시합니다.
특정 순회에서는 아무 일도 안하고 다음 순회로 가고 싶을 수 있기 때문입니다.

라고 설명하셨는데 쉽게 풀어 쓰자면,
break과 다르게 다음 문을 실행시킴 continue는 다음 스코프의 코드를 싹다 무시하고 다음 회차로 넘김.
break는 해당 스코프만 탈출함

이중 반복문

// Main.c

#include <stdio.h>

int main(void)
{
	int i, j;

	for (i = 1; i <= 3; ++i)
	{
		for (j = 1; j <= 3; ++j)
		{
			printf("%c ", '*');
		}
		printf("\n");
	}

	return 0;
}

계속 하던것

0개의 댓글