21. [UE5] 블루프린트를 위한 프로그래밍 기초

2024. 10. 18. 00:53·4. 언리얼 엔진(Unreal Engine) 공부/Unreal Engine 5

1. 프로그래밍이란 무엇인가?

  • 데이터(값) 처리 : 변수, 연산
  • 실행 흐름 제어(어떻게 실행되게 할 것인지)
  • 실행이 진행되는 과정에서 적절한 기능 실행
    • 적절한 API 사용
    • 필요한 함수를 제작

1) 알고리즘 / 로직

알고리즘 로직
  • 문제를 해결하기 위한 절차나 방법
  • 여러 가지 단위 기능을 조합하고 조립해서 하나의 완전한 기능을 할 수 있도록 만들어 주는 것
  • 프로그램의 논리적인 흐름(차례대로 무언가를 해야 하는 것으로 연결된 것)
  • Flow Chart
  • 알고리즘의 연결

 

2) 프로그래밍 이론

이벤트 변수
  • 인터페이스 입력에 대한 반응
  • 상황 변화에 대한 반응을 감지하고 이에 대한 반응을 만들기
  • 캐릭터가 충돌 영역을 지나치는 순간 상황 변화가 생기고, 어떻게 반응할 것인가
  • 변수(Variable) : 변하는 수 (값 → Value / Data)
    • 데이터를 저장하기 위해 할당받은 메모리 공간
    • 변수에 저장된 값은 변경될 수 있음
  • 상수(Constant)
    • 변수에 저장된 데이터가 변경되지 않음
    • 리터럴 상수(Literal Constant) : 값 자체를 상수로 얘기할 때
수식 / 연산 제어문
  • 대입 연산 : 변수에 값을 넣어주는 것
  • 산술 연산 : 숫자 계산 / 나머지를 구하는 % 연산
  • 증감 연산 : 증가 + 감소 연산
    Count 연산 : 갯수를 세다
  • 비교 연산
  • 논리 연산
  • 분기문
    • 조건식/수식의 결과에 따라 실행 흐름이 분기됨
    • branch
  • 반복문
    • 일정 횟수동안 반복 실행
    • For Loop
    • While Loop
함수 API
  • 캡슐화 : 패키징
  • 코드의 효율적인 사용 / 재사용
  • 함수 단위 모듈화 프로그래밍 : 레고 블럭처럼 끼워 맞춰 쓰는 것

    함수 매개 변수 
    • 함수 실행에 필요한 전달값
    • 함수에 넣어주는 재료(값)

    함수 리턴값
    • 함수 실행 결과 값을 호출자에게 반환
    • 함수를 실항하겠다 (호출, call)
  • Application Programming Interface
  • 두 애플리케이션 간의 서비스
  • 함수의 형태로 제공
  • 잘 조립해서 사용하면 원하는 형태로 사용 가능

 

3) 데이터 타입

  • 범용으로 쓰지 않고 데이터 종류의 전용으로 사용할 수 있게 변수의 데이터 타입을 정해서 씀
  • 속도가 빨라지고 효율이 좋아짐
  • 같은 종류끼리 연산되는 것이 기본
    • 정수 타입
    • 실수 타입
    • 문자 타입
    • Boolean 타입
    • Vector 타입
데이터 타입을 결정해주는 예약어
  • 정수 타입 :Int(Integer)
  • 실수 타입 : float
  • 문자 타입 : string
  • Boolean 타입 : bool
  • Vector 타입 : Vector (특징 : 크기, 방향을 가짐 / 집합 데이터)
Blueprint 데이터 타입 활용
  • Blueprint Actor를 새로 생성
  • 좌측 하단 Variables에 다음과 같은 컴포넌트들을 생성
  • 컴포넌트를 Graph에 가져올 땐 Set으로 추가

 


2. 연산의 종류

1) 대입 연산

 

2) 산술 연산

Add

8

 

Subtract (위부터 아래로 뺀다)

2

Multiply

15

 

Divide (5/3)
  • 몫을 구함

1

 

% (5/3)
  • 나머지를 구함

2

 

3) 증감 연산

  • 3을 변수초기화로 지정해 처음 시작부터 3으로 시작

(좌) 위는 변수초기화가 맞지만, 아래는 아님

 

증가 연산

3씩 계속 증가

감소 연산

2씩 계속 감소

 

Count 연산
  • 갯수를 세는 연산으로, 반복 실행이 기본
  • ++ → Increment int
  • - - → Decrement int
  • === → 데이터 타입까지 같은지 비교

 

 

4) 비교 연산

  • 연산자 : ==, !=. >(크다), >=, <(작다), <=
  • 왼쪽에 변수를 두는 방식을 기준으로 크다/작다
  • 연산에서 !는 부정의 의미를 가짐(Not)
  • 결과는 Bool 데이터로 나옴

 

 

숫자 크기 비교

true

 

문자 크기 비교
  • ==(같은지), !=(다른지)

true

 

5) 논리 연산

  • 비교 연산과 같이 쓰는 것이 일반적
  • Boolean 연산 : True(1) / False(0)
  • 연산자 AND(&&, Ampersand), OR(||, Pipe), NOT(!)

AND : 모두 True일 때, True / OR : 하나만 True여도 True
Ture

 


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에 호출해서 연결

False

 

매개변수(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
  • 바퀴 4개, 문 4개, 백미러 2개, 헤드라이트 2개
 SUV Class
  • Car Class 상속
  • 뒷문 바퀴 1개, 루프 박스

Bike Class

  • Car Class 상속
  • 바퀴 2개, 문 0개, 헤드라이트 1개 (상속 받은 것을 사용하지 않고 새로 지정해서 사용. 핸재 것을 우선순위로 함)

 


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
'4. 언리얼 엔진(Unreal Engine) 공부/Unreal Engine 5' 카테고리의 다른 글
  • 23. [UE5] UI Interaction(Widget)
  • 22. [UE5] 다른 액터와 캐릭터가 상호작용 하기(Overlap, CutScene, LevelBlueprint)
  • 20. [UE5] 블루프린트를 활용한 캐릭터 움직임 제어
  • 19. [UE5] 인터랙션 / 충돌체 / 블루프린트 개념
스농이
스농이
2024.07.22부터의 기록
  • 스농이
    3D 비주얼 아티스트 성장일지
    스농이
  • 전체
    오늘
    어제
    • 3D 비주얼 아티스트 공부 기록 (76)
      • 1. 콘텐츠 기획 공부 (7)
        • 콘텐츠 기획 [이론] (3)
        • 콘텐츠 기획 [실습] (4)
      • 2. 3D 렌더링 및 생성형 AI 공부 (5)
        • VRED (2)
        • Stable Diffusion & Blender (2)
        • GPT4o (1)
      • 3. 후디니(Houdini) 공부 (16)
        • Houdini [이론] (8)
        • Houdini [실습] (8)
      • 4. 언리얼 엔진(Unreal Engine) 공부 (33)
        • Unreal Engine 5 (26)
        • Automotive Animation 스터디 [기.. (5)
        • Automotive Cinematic 스터디 [심.. (2)
      • 2. 블렌더(Blender) 공부 (15)
        • 지오메트리 노드 [이론] (3)
        • 지오메트리 노드 [실습] (2)
        • Blender [이론 및 실습] (10)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
스농이
21. [UE5] 블루프린트를 위한 프로그래밍 기초
상단으로

티스토리툴바