1. 프로그래밍이란 무엇인가?
- 데이터(값) 처리 : 변수, 연산
- 실행 흐름 제어(어떻게 실행되게 할 것인지)
- 실행이 진행되는 과정에서 적절한 기능 실행
- 적절한 API 사용
- 필요한 함수를 제작
1) 알고리즘 / 로직
알고리즘 | 로직 |
|
|
2) 프로그래밍 이론
이벤트 | 변수 |
|
|
수식 / 연산 | 제어문 |
|
|
함수 | API |
![]() |
|
3) 데이터 타입
- 범용으로 쓰지 않고 데이터 종류의 전용으로 사용할 수 있게 변수의 데이터 타입을 정해서 씀
- 속도가 빨라지고 효율이 좋아짐
- 같은 종류끼리 연산되는 것이 기본
- 정수 타입
- 실수 타입
- 문자 타입
- Boolean 타입
- Vector 타입
데이터 타입을 결정해주는 예약어
- 정수 타입 :Int(Integer)
- 실수 타입 : float
- 문자 타입 : string
- Boolean 타입 : bool
- Vector 타입 : Vector (특징 : 크기, 방향을 가짐 / 집합 데이터)
Blueprint 데이터 타입 활용
- Blueprint Actor를 새로 생성
- 좌측 하단 Variables에 다음과 같은 컴포넌트들을 생성
- 컴포넌트를 Graph에 가져올 땐 Set으로 추가
2. 연산의 종류
1) 대입 연산
2) 산술 연산
Add
Subtract (위부터 아래로 뺀다)
Multiply
Divide (5/3)
- 몫을 구함
% (5/3)
- 나머지를 구함
3) 증감 연산
- 3을 변수초기화로 지정해 처음 시작부터 3으로 시작
증가 연산
감소 연산
Count 연산
- 갯수를 세는 연산으로, 반복 실행이 기본
- ++ → Increment int
- - - → Decrement int
- === → 데이터 타입까지 같은지 비교
4) 비교 연산
- 연산자 : ==, !=. >(크다), >=, <(작다), <=
- 왼쪽에 변수를 두는 방식을 기준으로 크다/작다
- 연산에서 !는 부정의 의미를 가짐(Not)
- 결과는 Bool 데이터로 나옴
숫자 크기 비교
문자 크기 비교
- ==(같은지), !=(다른지)
5) 논리 연산
- 비교 연산과 같이 쓰는 것이 일반적
- Boolean 연산 : True(1) / False(0)
- 연산자 AND(&&, Ampersand), OR(||, Pipe), NOT(!)
3. 제어문
- 프로그램의 실행 흐름 제어
1) 분기문
- 조건식 / 수식의 결과에 따라 실행 흐름이 분기됨(실행 흐름이 갈라짐)
- 실행 흐름이 갈라지는 것에 포커스로 분기문이라는 표현을 쓰자
- 조건문(비교 연산) → If
- 언리얼 엔진에서는 branch로 사용
- If나 branch에 사용되는 연산식이 비교문 뿐만이 아닌 일반 산술연산식(+,- 수식)도 사용 가능함
2) 반복문
- 일정 횟수동안 반복 실행(시간 개념이 아닌 횟수 반복) → 동시 실행
- 1초에 30FPS 반복과는 다른 개념 ( ← 이건 일정한 시간 개념이 포함된 개념)
- For Loop은 언리얼 엔진에서 많이 쓰이지 않음 → 데이터 처리할 때, 주로 많이 씀)
- 구문이란 제대로 된 문장으로 포함되는 것
- 구문1 : 시작값(int n = 1;) First Index
- 구문2 : 실행 조건 (n < 10;) Last Index
- 구문3 : 변수증감식
Sequence
- 가로 방향 실행 흐름을 세로 방향으로 분기
4. 함수
- FUNCTIONS에서 함수를 만들고 해당 함수 공간(Flow Control)에서 함수를 만들고 Event Graph에 호출해서 연결
매개변수(Paramter)와 리턴값(Return) 연결
- 새로운 함수 만들기
- Parameter를 만들기 위해 Inputs에서 +하기
- Outputs도 추가
- Output에서 True는 옆 체크박스 표시
- Event Graph에서 FlowValue 함수 꺼내기
- 원리
5. 클래스(Class)
클래스(Class)
- 객체의 분류 : 정의
- 설계도
- OOP(Objected Oriented Programming : 객체 지향 프로그래밍) 프로그래밍에서 사용되는 것
인스턴스(Instance)
- 클래스를 기반으로 마들어진 실제 객체
- 복제의 개념도 함께
상속(Inherited)
- 부모 클래스의 특성을 자식 클래스에 전달하는 것
- 아래는 예시
Parent Class | Child Class |
Car Class
|
SUV Class
Bike Class
|
6. 컴파일과 인터프리트
- 컴퓨터가 사용할 수 있는 데이터 : 2진수(0,1)
- 명령어는 영어로 이루어져 있고, 컴퓨터가 알아들을 수 있도록 영어를 2진수로 변환해야 함
- 이에 대한 두 가지의 방법 → 컴파일 / 인터프리트
- 컴파일은 통번역 / 인터프리트는 동시통역이라고 생각하면 쉬움
항목 | 컴파일(Compile) | 인터프리트(Interpret) |
번역 방식 | 전체 프로그램을 미리 기계어로 번역 | 한 줄씩 기계어로 번역하며 실행 |
실행 속도 | 실행 전에 번역이 완료되어 속도가 빠름 | 한 줄씩 실행하므로 속도가 느림 |
유연성 | 코드 수정시 전체를 다시 컴파일 해야 함 | 수정된 부분만 다시 실행 가능 |
오류 확인 | 컴파일 과정에서 오류를 사전에 잡을 수 있음 | 실행해봐야 오류를 알 수 있음 |
최적화 | 다양한 최적화가 가능 | 한 줄씩 실행하므로 최적화가 어려움 |
디버깅 | 디버그 정보가 포함될 수 있지만 실행 파일이 커짐 | 한 줄씩 실행하며 결과를 추적 가능 |
사용 사례 | 언리얼 엔진 | 유니티(가볍기 때문에 이 방식이 가능) |
'4. 언리얼 엔진(Unreal Engine) 공부 > Unreal Engine 5' 카테고리의 다른 글
23. [UE5] UI Interaction(Widget) (0) | 2024.10.30 |
---|---|
22. [UE5] 다른 액터와 캐릭터가 상호작용 하기(Overlap, CutScene, LevelBlueprint) (1) | 2024.10.23 |
20. [UE5] 블루프린트를 활용한 캐릭터 움직임 제어 (0) | 2024.10.14 |
19. [UE5] 인터랙션 / 충돌체 / 블루프린트 개념 (1) | 2024.10.10 |
18. [UE5] 동영상 Material 만들기 (0) | 2024.10.02 |