====== Unit ======
* 1 unreal unit = 1cm
====== 뷰포트 UI ======
ref : [[https://docs.unrealengine.com/latest/KOR/Engine/UI/LevelEditor/Viewports/ViewportControls/index.html]]
| N | 스냅 |
| Alt + 드래깅 | 복사 |
| Alt + Shift + 드래깅 | 복사하는 동안, 카메라가 커서와 같이 움직이도록 |
| X | 컨텐츠 브라우져에서 필터 기능 삭제 |
^ 뷰포트에서 이동 ^^
| Left-Button click & mouse moving \\ 마우스 왼쪽 버튼 누른 상태로 마우스 움직이기 | 전후이동, 좌우 회전 |
| R-Button click & mouse moving \\ 마우스 오른쪽 버튼 누른 상태로 마우스 움직이기 | 제자리에서 주위 둘러보기 |
| M-Button click & mouse moving \\ 마우스 가운데 버튼 누른 상태로 마우스 움직이기 | 상하,좌우 이동 |
| L and R-Button click & mouse moving \\ 마우스 좌우 버튼을 모두 누른 상태로 마우스 움직이기 | ::: |
^ WSAD moving ^^
| L or M or R-Button click 상태에서 WSAD로 FPS 이동 가능 ||
| E | 위로 이동 |
| Q | 아래로 이동 |
| C | 카메라 확대 (zoom-in) |
| Z | 카메라 축소 (zoom-out) |
^ 마야스타일 ^^
| 오브젝트 선택 후, F | 선택 오브젝트를 중심으로 카메라 이동, 오브젝트 포커싱 |
| Alt Key + L-Button click & mouse moving | 선택 오브젝트를 중심으로 텀블링(회전) |
| Alt key + R-Button click & mouse moving | 카메라 전/후 이동 |
| Alt + M-Button click & mouse moving | 상하좌우 이동 |
* Ctrl+R : 실시간 재현 on/off
=====평면뷰=====
* 휠 : 확대/축소
* R-Button click & mouse moving : 상하/좌우 패닝
* L-Button click & dragging : 오브젝트 선택
=====오브젝트 배치=====
* W : 오브젝트 이동 모드로
* content brower : 에서 오브젝선택 후 씬뷰로 갖다 놓기
* 씬뷰에서 마우스 R-Button click. 컨텍스트 메뉴가 보이는데,
* 이전에 사용했던 오브젝트를 바로 배치 가능
* 갖다 놓을때 다른 오브젝트가 있으면 바로 붙여주려고 한다.(그런가?)
=====오브젝트 이동=====
* W : 오브젝트 이동 모드로
* End key : 오브젝트가 바닥에 바로 붙는다.
* Ctrl + ~ : 오브젝트 좌표계를 (월드 <-> 로컬) 변경
* 씬뷰에서 오른쪽 상단 버튼에서 지구모양의 아이콘이 (월드 <-> 로컬) 변경 아이콘.
=====오브젝트 회전 =====
* E : 오브젝트 회전 모드
* Yaw : z축, 고개를 왼쪽 오른쪽으로 흔들면
* Pitch : 앞뒤 Y, 고개를 위 아래로 흔들면
* 롤 : x축, 고개를 갸우뚱하면
=====오브젝트 스케일링=====
* R : 오브젝트 스케일링
=====카메라 이동=====
* Shift + 드래깅 : 카메라와 같이 이동
* 뷰포트(씬뷰) 왼쪽 상단의 옵션 메뉴
* 'Lock to viewport actor'에서 라이트/카메라/액터의 시점으로 이것들을 조정할 수 있다.
* 이동 후에는 다시 메뉴를 열어서 'Unlock ..' 메뉴 항목 선택
=====컨텐츠브라우져=====
* 창열기 : Ctrl + Shift + F
* Collections : 즐겨찾기, 자주 사용하는 것을 저장해둔다.
* Local : 로컬 pc에만 저장
* Private : 소스저장소에 저장되지만 나만 사용
* 휠/R-Button Click : 위아래 스크롤 가능
====== 레벨디자인 ======
단축키
| 바닥에 스냅핑 | end key |
| 오브젝트를 스냅에 맞춘다 | Ctrl + End |
| 복사 | 오브젝트 선택 + Alt + Drag |
| 그룹 | Ctrl + G |
| 그룹 해제 | Shift + G |
| 반투명 오브젝트 선택 가능 | T key \\ 유리 같은 반투명 오브젝트를 선택할 수 있게 할지 말지 |
* 브러쉬 세팅
* 메쉬 변경 가능 - 면 늘리기, 버텍스 변경하기
* 오브젝트 더하기 빼기
* 빼는게 있다.(subtractive) - 일부분을 깍아낼수 있다.
* BSP -> Align Surface Planar : 두 오브젝트의 텍스쳐가 연속되는 형상으로 설정
* or 없는 경우, Geometry 섹션에서 같은 메뉴 찾아보기
===== 그외 =====
튜토리얼에서 bp 추가와 timeline 추가는 따로 정리하자. 일단 메모.
blueprint
* 이벤트 체크를 위해서 BoxTrigger 추가 . 이런게 있음.
timeline
* 애니메이션 처리
Movility
* Object Transform : static으로 설정되어 있으면 움직이지 않는다.
또 그외
* 창을 떼어내서 win+leftArrow, Win+rightArrow면 왼쪽, 오른쪽에 달라 붙는다.
* 라이트의 표시 반경을 끄려면, 씬뷰의 메뉴, Show -> Advanced -> LightRadius.를 off
* 리플렉션 : Modes 창에서 Visual -> Sphere Reflection Capture 를 화면에 갖다 두고 화면을 캡쳐하도록? 상세 사용법은 뭘까?
====== blue print ======
* G: 화면의 기즈모 표시 on/off
블루프린트가 있는 곳
* 레벨 자체
* 또는 오브젝트
* 레벨에 배치된 오브젝트는 레퍼런스를 추가해서 조작한다.
* 레퍼런스는 BP 에디터에서 한개 이상 추가할 수 있어서, 여러 부분에서 사용 가능.
* BP노드간 연결되늰 와이어에는 색은 사용되는 타입에 따라 색이 다름
| Event Begin Play | 레벨이 실행 되면 |
| Enable Input, Disable Input | 입력을 받을 수 있다? |
| Toggle Visibility | 보이거나 감추거나 |
| Input Key (?) | 어떤 입력을 받는다 |
* 라이트 : 오브젝트 -> Transform -> Mobility
* Stationary : 미리 만들어진 라이트를 사용하는 것,
* Movable : 실시간 라이트
* 노드 사이의 연결 선 끊기 : Alt+Clicking
* BP 그래프 편집기에 Get용 레퍼런스 추가 : 컴포넌트 선택. Ctrl + Dragging
* BP 그래프 편집기에 Set용 레퍼런스 추가 : 컴포넌트 선택. Alt + Dragging
* BP 그룹핑&이름짓기 : BP의 노드들을 여러개 선택 후, C key. 선택된 노드 그룹에 이름 추가.
블루프린트 사이에 통신
* CustomEvent를 추가해서 서로 호출하는 방식 사용
===== 클래스 BP =====
* Defaults :
* Components :
* Prefab처럼 여러 오브젝트(컴포넌트)를 묶어서 한개의 클래스 BP를 구성.
* Graph :
* ConstructionScript : 레벨 에디터에서 작업하다가?
* EventGraph : 실제 플레이 중에 실행되는 BP
===== 변수 =====
* 변수 노드를 직접 추가할 수도 있고
* 변수 노드를 사용하는 노드를 추가해서 , 변수 입력을 원하는 항목을 클릭 후 화면으로 끌어보면 자동으로 변수를 추가해주기도 한다.
변수 타입
* rotator : yaw(z), pitch(y), roll(x)
* 변수 타입이 다른 경우 캐스팅이 가능하다. 캐스팅된다는 노드가 추가됨.
* 구조체용 변수 타입도 사용 가능.
* 구조체의 특징은 'break'로 각 요소를 각각 사용할 수 있다는 장점.
* object : 씬에 오브젝트가 이미 있고 사용하고 싶으면 이걸
* class : 씬에 없는데 추가하려고 할때는 class
* Enum : 딱히. Enumerators 입력창에서 enum 항목 추가. asset에서 블루프린트 폴더에 추가한다.
* case with enum 하려면 모든 enum 항목에 대해서 노드를 만들고 연결해야 하는데.. 직접 해보고 다시 정리하자.
* Get, Set
* 숫자같은 일반 변수, 뭔가 작업 후에 Set을 다시 해주지 않으면 값이 반영되지 않는다.
* Array
* Array의 아이템은 모두 같은 타입이어야 함
* 사이즈가 동적임
* 0-base 인덱스
* Array에 연관되는 블루프린트 노드는, Array 노드를 선택해서 화면으로 끌어놓고 '관련항목'이 떳을때
* 일반적인 경우,
* Utilities -> Array -> 이하의 함수 중에 선택. 리스트에 대한 일반적인 메소드들.
* 녹색 함수 : 값을 사용만
* 블루 함수 : Array를 변화 시킴
* 반복 (Flowcontrol)
* ForEach .. 또 뭐드라.
* 리턴값이 Array인 경우
===== 루프 =====
팝업메뉴에서 'loop'로 검색해서 쓸 수 있는 노드 선택. (ForLoop 같은거)
FormatText
* 'Format' 항목에서 문자열 입력할때 대괄호({})에 키워드를 입력하면 'FormatText' BP노드에 자동으로 키워드가 추가된다.
* Format : "Test String {index}" 같이 입력하면 'index'항목이 추가됨
ForLoopWithBreak
* 루프 실행 중에는 break가 먹지 않으므로,
* 'Loop body' 의 노드 흐름 중에 break 조건을 검사하는 기능을 추가한다.
* 'Loop body' 의 연결 노드 (시작노드) 'Branch' 노드를 걸고, 조건을 검사하는 부분을 연결시켜 중단될 수 있게.
ForEach
* array같은 것의 항목에 대해서 루프.
* 콜렉션을 순행하는 것이므로 시작, 종료에 대한 조건이 필요없다는 것.
===== 디버그 =====
* 노드 선택 후, 마우스 우클릭 -> 브레이크포인트 추가
* 플레이하면 브레이크포인트에서 멈춘다.
====== 트랜스폼 ======
===== 요,피치,롤 =====
* 요(Yaw) : 고개를 왼쪽 오른쪽으로 흔들면
* 피치(Pitch) : 고개를 위 아래로 흔들면
* 롤(Roll) : 고개를 갸우뚱하면
====== 팁들 ======
* RandomStream :
* 일반 랜덤을 사용하면 값이 무작위로 매번 바뀌는데 한번 내려 받은 값을 쭉 사용하려고 하면
* Stream 노드를 추가하고 랜덤 값을 Stream에서 가져오면 한번 내려 받은 값을 그대로 쭉 사용한다.