Action Type - Path Through : 입력을 통과시킨다. (뭔지 감이 안온다)
이동 할당 - 이 방식은 느려서 잘 사용하지 않는다.
InputControl (파일) - Edit Asset 클릭 - Actions - Move - 2D Vector - 각 위치에 Binding - Path 클릭 - Keyboard 에서 By Location of Key 클릭 - 할당하는 키 클릭 (Path 옆에 T 버튼을 누르면 코드가 나오니 이걸로 쉽게 바꿀 수도 있다.)
ob.Add() 가 있을때 ‘.’은 ‘직접 접근 연산자’다. ⇒ ob 안에있는 Add에 접근한다.
ob가 다른 클래스를 상속하고 그 안에 또 다른 Add가 있다고 해도 ob의 Add가 호출된다.
A oba = ob; oba.Add();
부모에 있는 함수로 호출된다. (가상화 사용 안함)
가상화를 쓰는 이유 : ‘같은 이름’으로 ‘다른 역할’을 수행하기 위해서이다.
캐릭터 Move()
플레이어
몬스터
보스
캐릭터[3] {플, 몬, 보}
캐릭터[0].Move(); ⇒ 자식에 있는 Move를 콜 한다.
배열은 ‘포인터’이고, 배열의 이름은 ‘배열의 시작 주소다’
배열을 ‘가상 테이블’이라고 한다.
InputSystem
SendMessage : 애니메이션 이벤트, Invoke가 샌드 메세지 기반이다.
Test_Message
한 스크립트에서 ‘함수명’을 지정해서 ‘값’을 보내고 다른 스크립트에서 그것을 받아 지정된 함수를 실행한다.
SendMessage 안쓰는 이유
이 함수는 메세지 맵을 생성한다.
메세지 맵은 ‘함수 맵(string)’과 ‘함수의 주소’를 갖는다.
함수 맵은 ‘균형 이진 트리’로 동작한다.
균형 이진트리의 시간복잡도는 log n이다.
O(1) > O(log n) > O(n) > O(n log n) > O(n제곱)
최악의 경우 너무 오래 걸리기에 사용하지 않는다.
BroadCast Message도 자식까지 찾아야하기에 사용하지 않는다.
Invoke UnityEvent도 느리다.
Invoke C Sharp Events를 사용한다.
player Input(컴포넌트)는 있어야하지만, Input Controller는 없어도 괜찮다.
C# 스크립트에서 정의를 할 수 있기 때문이다.
함수 콜
Class A에 void Add() 함수가 있다고 가정하자
다른 클래스에서 A ob = new A();를 정의한다.
이때, ‘스택’ 영역에는 ob 공간이 생성된다.
이 공간은 32비트에서는 ‘4바이트’, 64비트에서는 ‘8바이트’이다.
힙 공간에는 A의 공간이 생성되고 A의 안에는 Add 공간이 생성된다.
ob는 A의 주소를 가지고 있고 A는 Add의 주소를 가지고 있다.
Add의 주소는 Code 영역의 Add 코드의 주소를 가리킨다.
ob.Add를 하면 주소들을 찾아서 이동
가상함수 테이블 설명
Player Input(컴포넌트) - Behavior(어떻게 액션을 실행할건지 정하는 속성) - UnityEvent 간단 실행
Player Input(컴포넌트) - Behavior(어떻게 액션을 실행할건지 정하는 속성) - C# Event 간단 실행
4교시, 5교시
InputControl 안만들고 스크립트내에서 액션 맵 만들기
선생님은 InputControl에 세팅만 해놓고 기능은 스크립트로 작성한다.
너무 하드코딩이기 떄문이다.
오류나니까 선생님 코드 보고 오류 수정하자
조명 - 그래픽 이론
평면정보를 출력하는 애 : Material
메테리얼 정보를 출력하는데 ‘PBR’을 사용한다.
PBR
Metalic
Smoothless (Roughness 거칠기정도)
색을 보여주는 4가지 방법
Ambient : 사방에서 고르게 들어오는 빛
주가 되는 광원 색 (밖에 나가면 태양이 나의 색이고, 실내에 있으면 형광등이 나의 색이다.)
낮이면 태양이 노란 빛을 화면에 비추니 오브젝트가 노란 빛을 내고, 석양이 지면 화면에 주황 빛을 준다.
Diffuse : 내가 가진 색 - 음영 관련 색상
이게 순수한 상태 : Albedo (옷이 검정색이라면, 옷의 Albedo는 검정이다.)
Diffuse.Texture(텍스처(이미지) 색) * Diffuse.Color(보정색) * 음영(그림자는 아니고 빛에 의해 가려지는 부분)
Nomal Vector(한 면에 수직인 방향) 과 조명의 벡터(노멀벡터에서 빛을 보는 방향의 벡터)의 ‘내적’이 ‘음영’이다.