DOTS : 유니티를 객체지향방식이 아닌 데이터지향방식으로 개발하는 것
일반적으로 캐릭터에게 각각 상태가 존재한다
가만히 있는 상태 : idle()
walk()
run()
attack() 등
Unity
fly through할 때 shift 누르면 가속됨
물론 frame select해도 올 수 있음
다양한 방식으로 볼 수 있음
스냅 Snap
그리드에 맞춰 컨트롤 하는 기능
단축키 : ctrl + 핸들 클릭
여기서 설정값에 따라 move, rotate, scale 조정 가능
하이어라키 뷰 Hierarchy View
Scene에 배치된 GameObject들의 Text 목록(계층 구조)
눈 모양 : 레이어 숨김
손 : 클릭 잠금 = select 잠금
복사 : ctrl + d
그룹화
그룹화 할 항목 선택 후 Create Empty Parent 클릭
단축키 : ctrl + shift + g
부모가 생성되면서 자식으로 묶임
F2로 이름 변경 가능
자식 object를 밖으로 드래그해서 뺄 수도 있다 like 레이어 작업
부모 위의 부모 → parent.parent.~
최상위 부모 : root
게임 오브젝트 Game Object
빈 게임 오브젝트 Empth GameObject
아무 모양도 없다
생성은 Hierachy에서 Create Empty
사용 범위 : 그룹화, 스크립트 실행용 등
일괄 적용 방법
L - line, 한줄로 쭉 배치
R - random, 랜덤으로 배치 : -30 ~ 30 사이의 값이 무작위로 배치됨
surface snap
표면에 붙이기
단축키 : 해당 오브젝트 선택 후 ctrl + shift
해당 빈 네모 클릭하여 드래그 하면 됨
좌표 기준은 이렇게 바꿀 수 있음
vertex snap
모서리(꼭짓점) 붙이기
단축키 : 해당 오브젝트 선택 후 v(ertex)
해당 빈 네모 클릭하여 드래그 하면 됨
Object의 앞면, 뒷면
면을 만드는 것은 컴퓨터 리소스를 잡아먹기 때문에 뒷면은 안보이도록 원래 처리되어 있음
최적화를 위해서!
plane 같은 경우 보통 땅으로 쓰는데 땅 밑을 파고 들어가지 않는 한 땅 밑은 구현할 필요가 없음
평면 Plane과 사각형 Quad의 차이
폴리곤 차이!
창문 같은 거 만들 땐 Plane 쓸 필요 없다 → Quad
버텍스 Vertex, 엣지 Edge, 폴리곤 Polygon
vertex : 모서리(꼭짓점)
edge : 선
polygon : 면 = 삼각형(면을 구성하는 최소 단위가 삼각형이기 때문에 일반적으로 폴리곤을 삼각형이라고 함)
로우Low 폴리와 하이Hight 폴리의 비교
퀄리티는 폴리곤 수에 비례함
폴리곤 수는 퀄리티와 최적화에 영향을 줌
폴리곤 수에 정답은 없음
LOD Group(추후 최적화 때 배울 예정)
멀리서 볼 땐 로우 폴리, 가까이서 볼 떈 하이 폴리로 처리하는 컴포넌트
게임 뷰 Game VIew
실행된 결과물
Hierarchy view에서 main camera로도 확인 가능
Stats
현재 상태를 간략하게 보여줌
재생하면 FPS(초당 프레임 수)등 다 나옴
높으면 400-500 낮으면 100~
프로젝트 뷰 Project View
프로젝트의 파일 목록
리소스 관리
에셋 Asset
유니티에서 사용하는 모든 프로젝트 파일의 기본 단위
슬라이더로 프리뷰 아이콘 크기 조절 가능
!! 주의
아래 세 개는 이미 유니티에 존재하므로 중복으로 폴더 생성하면 안됨
단축키
alt + click로 토글 전체 펼치기, 접기 가능
검색 기능
타입(자료형) 검색
texture = 이미지
라벨 검색
라벨 추가
이미지는 Inspector View에 프리뷰가 있음
프리뷰를 열면 라벨을 붙일 수 있음
라벨은 여러개 사용 가능 like 해시태그
게임 구상에 대해 고민할 때 주의해야 할 것
불편함과 어려움은 다르다!
난이도를 높이겠다고 화면을 어둡게 만드는 건 그저 불편하게 만드는 것이다!
인스펙터 뷰 Inspector View
선택한 오브젝트 또는 에셋의 상세 정보
Camera 오브젝트의 상세 정보
Light 오브젝트의 상세 정보
Game Object 활성화/비활성화
object 존재 유무를 on/off
단축키 : alt + shift + a
Static 설정(정적 게임 오브젝트 설정)
계산을 하기 위해 미리 “움직이지 않는 게임 오브젝트”로 설정해두는 것
Contribute GI : 사실적인 라이트 설정(엄청 무거운듯)
태그 Tag
오브젝트의 별명
총알을 예시로 들면 처음엔 bullet으로 시작해도 bullet(1), bullet(2)…되기 시작하면 태그가 필요함
레이어 Layer
오브젝트 그룹
윈도우 바 Window Bar
기본은 pivot, local로 설정되어 있어야 함
좌표계
피봇 pivot : 기준점
센터 center : 무게중심
pivot은 캐릭터라면 기본적으로 발에 줘야 함
Global : World 좌표
Local : Object 좌표
기준점의 차이
World 포지션 : 월드 기준 = position
Local 포지션 : 부모 기준 = local position
일반적으로 Local 포지션은 잘 안씀
pivot 위치 바꾸는 법
빈 게임 오브젝트를 이용하면 됨
1. 빈 게임 오브젝트 만들어서 0으로 좌표 바꾼 다음 붙여줌
2. 빈 게임 오브젝트 만들어서 좌표 수정이 필요한 오브젝트들을 안에 넣어준 후, 빈 게임 오브젝트의 좌표를 위로 올려줌
기본적으로 이족 보행 등의 캐릭터는 모델링 할 때 pivot을 잘 잡아서 줘야 함
실습
1. scene 생성
저장 안되어있으면 Hierachy View에서 *로 보여줌
2. 생성한 new scene으로 들어가기
3. script 생성(camel 표기법)
콘솔 뷰 Console View
디버깅 시 사용
js의 console.log처럼 Debug.log를 사용하면 되는데 세 종류가 있음
- Debug.error : 빨강
- Debug.warning : 노랑
- Debug.log : 일반
Unity C# 프로그래밍
Start()
유니티 Play 시 1번만 실행 되는 함수
Update()
유니티 Play 시 Loop(반복) 실행 되는 함수
실습
1. script 생성
맨 앞 첫글자는 대문자
script 파일명이 클래스명이 됨
2. script 작성
!! 주의
class명은 unity랑 연동되어 있기 때문에 변경하면 안됨!
unity에서도 스크립트 파일 명 변경하면 안됨!
3. 빈 게임 오브젝트 생성
단축키 : ctrl + shift + n
4. 스크립트 추가
5.실행한 뒤 콘솔 확인
실행 단축키 : ctrl + p(lay)
실습2 : class, method, variable
- namespace 생성
2. class 안에 넣기or 맨 마지막 중괄호만 지웠다가 다시 쓰면 자동 정렬됨
단축키 : alt로 선택한 영역 이동, tab으로 들여쓰기 적용.
3. using을 사용해 ProgrammerA namespace를 ProgrammerB에서 사용하기
→ ex. Monster.attck처럼 사용
유니티 함수 생명 주기 요약
특정 오브젝트의 Start를 다른 오브젝트의 Awake보다 먼저 실행하고 싶은 경우
ObjA, ObjB, ObjC에 모두 awake가 있고, ObjA에는 start가 있을 때
그냥 실행하면 각 Obj의 모든 awake가 먼저 실행되어버림
이땐 ObjB와 ObjC를 off하고 ObjA 실행 끝나면 ObjB를 on하는 방식으로 처리 가능
유니티 기본 함수
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BasicMethod : MonoBehaviour
{
void Awake()
{
Debug.Log("Awake Method");
}
void Start()
{
Debug.Log("Start Method");
}
void Update()
{
Debug.Log("Update Method");
}
void FixedUpdate()
{
Debug.Log("FixedUpdate Method");
}
void LateUpdate()
{
Debug.Log("LateUpdate Method");
}
void OnEnable()
{
Debug.Log("OnEnable Method");
}
void OnDisable()
{
Debug.Log("OnDisable Method");
}
void OnDestroy()
{
Debug.Log("OnDestroy Method");
}
}
클래스, 함수, 변수
클래스와 함수의 모습
클래스 Class
함수와 변수를 포함할 수 있는 집합 ex. 사람
함수 Method
기능처리를 위한 작업의 단위
ex. 걷기(), 뛰기(), 말하기()
변수 Variable
변할 수 있는 수, 읽기/쓰기가 가능한 데이터, 어떠한 값을 담아두는 접시
like 속성
ex.이름, 나이, 키, 몸무게
멤버 변수와 지역 변수
- 멤버 변수 : 클래스에 존재하는 변수
- 지역 변수 : 함수에 존재하는 변수
var
타입 추론형
지역 변수 선언으로만 사용 가능
클래스와 인스턴스
왼쪽에서 선언한 class인 Person을 오른쪽에서 가져와 객체(인스턴스)를 만들 수 있음
실습3 : 유니티 적응할 겸 어몽어스 만들기
블렌더보다 단순무식한 것 같기도 하고
재밌당
오늘 배운 일괄 위치 적용도 해봤다
굿
'공부 > Game Bootcamp' 카테고리의 다른 글
[멋쟁이사자처럼 부트캠프 TIL] 유니티 게임 개발 3기 : Flappy Bird 만들기 (2) | 2024.11.29 |
---|---|
[멋쟁이사자처럼 부트캠프 TIL] 유니티 게임 개발 3기 : Animation, Light, UI - Text 등 (0) | 2024.11.28 |
[멋쟁이사자처럼 부트캠프 TIL] 유니티 게임 개발 3기 : Animator, Rigidbody 등 (1) | 2024.11.27 |
[멋쟁이사자처럼 부트캠프 TIL] 유니티 게임 개발 3기 : 캐릭터 만들기 + Unity C# 기초 문법(연산자, 조건문) (0) | 2024.11.22 |
[멋쟁이사자처럼 부트캠프 TIL] 유니티 게임 개발 3기 : C# 기초 + Unity 기초 세팅 (1) | 2024.11.20 |