본문 바로가기

언리얼 BluePrint 정리

06/14 학습 정리 ( MAP, Dynamic Material Instance )

맵 ( MAP )

 

전에도 말했지만 Key값을 통해 Value의 값에 접근하는 컨테이너, Set과 같이 Hashing방식을 사용

 

자가정렬 이진트리인 RedBlackTree에서 이진트리의 최악의 상황을 방지하기 위해 만든 2-3-4트리의 내용을 구현한것 (찾아 봤는데 이해가 힘듬 나중에 알아보자)

 

이진트리 ( Binary Tree )

 

트리구조에서 자식노드를 최대 2개까지만 만드는 트리, 이러한 구조는 이진탐색 알고리즘을 통해 찾고자 하는 원소를 금방 찾을수 있다.

 

이진탐색 알고리즘 ( Binary Search Algorithm )

 

쉽게 말해서 UP&DOWN게임. 순차적으로 정렬되어있는 배열의 형태에서 찾고자 하는 원소가 중간값보다 크냐 작냐로만 따져 절반씩 소거해 가면서 찾기 때문에 빠르다.


피격시 character에 색변경 기능

 

피격시 캐릭터가 순간적으로 빨간색으로 변경되게 만들건데 머티리얼의 내부 파라미터인 BodyColor를 변경하면된다.

하지만 피격된다라는건 우리가 게임을 실행하고 공격을 받았을 때 일어나는일 즉 런타임때 발생하는 이야기인데 머티리얼은 런타임때 변경이 불가능하기에 Dynamic Material Instance를 사용한다.

(프로그래밍에서 Static : 컴파일때 ,  Dynamic : 런타임때)

 

Create Dynamic Material Instance

 

타깃이 들고있는 머티리얼을 새로운 Dynamic Material Instance를 생성하여 대체시켜준다.

(타깃이 머티리얼을 포인터 형식으로 들고있어 대체 될때 기존주소는 Garbage Collector가 회수한다.)

 

만들어진 Dynamic Material Instance의 BodyColor를 변경 시킬 함수를 만들어 주는데 이때 사용하는 Color변수는

Color가 아니라 Linear Color이다. (Get Materials의 리턴값은 Material Interface, 머티리얼의 최상위 클래스라서 Dynamic Material Instance로 형변환 해야한다)

 

Linear Color

 

0~1의 범위를 가지는 Float 변수

일반적인 Color는 8비트(0~255)의 값으로 표현하는데 16비트값의 색을 표현할수 있는 모니터가 있다고 가정하였을때 

Color를 35로 설정 해두면 8비트 모니터에서는 35/255를 표현하지만 16비트 모니터 에서는 35/65535를 표현하기 때문에

Delta Time같이 다른 환경에서도 같은 값을 얻기위해 비율로 색상을 설정한다.

 

 

피격시 빨간색으로 바꾸고 0.2초뒤 원래색으로 돌아오게 한다.