오늘 학습 키워드
유니티 입문 팀 프로젝트, 유니티 스탠다드반 강의
오늘 학습 한 내용을 나만의 언어로 정리하기
유니티 입문 팀 프로젝트 기획
-
제목 : 한입런
-
주제 : Fire&Water, 쿠키런, 궁수의 전설 중에 하나 레퍼런스 게임으로 골라서 만들기
-
컨셉 브레인 스토밍 내용 (파란색이 확정)
- 와이어 프레임
- 팀원 분배
- Player 제작을 맡게 되었음.
유니티 스탠다드반 강의
에셋 설치
- V키를 누르고 오브젝트의 모서리를 잡은 후에 다른 오브젝트에 붙이면 자연스럽게 딱 붙음
- Ctrl을 누르고 이동하면 0.25씩, 회전하면 15도씩, 크기 변경을 하면 1씩 변경된다.
프로젝트 관리
- 01.Scene, 02.Script 등등, 번호를 붙이면 보기 편함
- 그리고 99.Assets로 하면 저작권 있는 외부 에셋을 나중에 빼기에 용이함
좌표
- 절대 좌표 : World Position
- 상대 좌표 : Local Position
- 화면 좌표 : UI에서 사용함. 기본적으로는 오브젝트보다 위에 있음
벡터
- 크기와 방향을 가지고 있음
- A + B : A 끝에 B를 잇는다. 원점부터 방금 이은 곳까지 쭉 이으면 그게 A + B 벡터
- A - B : B가 A를 보는 방향의 벡터
- 단위벡터화 : 벡터의 방향만 남기고 크기를 1로 남기는 것. normalize 함수를 쓰면 됨
- 스칼라곱 : 벡터에 스칼라를 곱해서 크기를 증가시키는 방법
- 벡터를 구조체로 하는 이유는 (확실하지는 않지만) 가비지 컬렉팅을 따로 안하고 자동으로 할당이 해제되기 때문에 메모리 효율이 좋기 때문이다.
유니티 생명 주기
- Awake : 맨 처음 최초 한 번 실행
- OnEnable : Enable 상태가 될 때마다 실행
- Start : 처음에 한 번 실행
- FixedUpdate : 별도의 고정 빈도 프레임 사용. 물리 계산용
- Update : 프레임마다
- LateUpdate : 프레임마다
- OnDisable : Disable 상태가 될 때마다 실행
- OnDestroy : 객체가 파괴될 때 실행
- 위와 같은 생명주기를 따르기 때문에, 다른 클래스가 필요할 때에는 가급적 Start에서 가져오는 것이 좋음. 오브젝트가 동적으로 생성되는 경우 Awake가 실행될 타이밍에 존재하지 않을 수 있기 때문
MonoBehaviour
- 게임 오브젝트 루프에 영향을 받는 클래스. Invoke, GetComponent 등 다양한 함수를 가지고 있다.
- 상속 관계 : Object > Component > Behaviour > MonoBehaviour
- 유니티 코어에서는 Update가 있는 모든 MonoBehaviour들을 캐싱해두기 때문에, 비어있는 Update를 지워주는 것 만으로도 성능이 향상된다.
- 코어 부하를 줄이기 위해 MonoBehaviour를 상속하지 않는 일반 C# 클래스를 만들기도 한다.
- private 메소드를 쓰는 방법이 있는데, SendMessage(“함수명”) 을 쓰면 된다. 다만 성능이 좋지 않다.
- 애니메이션 이벤트가 SendMessage를 사용한다.
코드 구조
- 가능하면 기능별로 따로 두는게 좋다.
- 예시 : 특정 키를 누르면 플레이어가 움직이게 함
- 플레이어의 키 입력을 담당하는 부분 (PlayerInput)
- 플레이어의 이동을 담당하는 부분 (PlayerMove)
내일 학습 할 것은 무엇인지
팀프로젝트 개발 시작