일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- pixel art
- 채색
- 반환원정대
- 노하우
- 장학팀
- 스마일게이트
- menu
- 기초
- 애니메이션
- COSMO
- photoshop
- 개발
- 드로잉 연습
- 인디게임 개발
- Pixelart
- 도트공부
- 드로잉
- 모작
- 포토샵
- 서포터즈
- layer
- Aseprite
- 도트
- 픽셀 아트
- 에이세프라이트
- TOOL
- 픽셀아트
- 연습
- 자원순환보증금관리센터
- 멋쟁이사자처럼
- Today
- Total
소소한 나의 하루들
유니티 오브젝트의 생명주기 본문
출처: https://youtube.com/playlist?list=PLO-mt5Iu5TeYI4dbYwWP8JqZMC9iuUIW2&feature=shared
유니티 생명주기에서 가장 먼저 실행되는 구간은 초기화 영역이다. [Awake() → Start()]
1. 초기화 영역에서도 가장 먼저 실행되는 함수는 Awake() 함수이다. Awake()는 게임 오브젝트를 생성할 때, 최초 실행되는 함수이다.
2. 그 다음 실행되는 함수는 Start() 함수이다. Start()는 업데이트 시작 직전, 최초 실행되는 함수이다. (Update 영역으로 들어가기 전에 최초 실행)
초기화 영역이 끝나면 실행되는 것이 물리연산 영역이다. [FixedUpdate()]
3. 여기 사용되는 함수는 FixedUpdate() 함수이다. 이 함수는 유니티 엔진이 물리연산을 하기 전 실행되는 Update() 함수이다.
*Update() 함수는 1초에 여러 번 작동하는 함수이다. (보통 1초에 50번 실행) 컴퓨터 사양에 영향받지 않는다.
고정된 실행 주기로 CPU를 많이 사용한다. (고정 프레임 유지로 인해 CPU 부하 발생)
따라서 FixedUpdate() 함수 영역 안에는 '물리연산'과 관련된 로직만 넣는다.
물리연산까지 마쳤으면, 이제는 업데이트 영역이다. [Update()→LateUpdate()]
이 부분부터는 게임 로직 영역이라고 볼 수 있다.
4. 여기에 사용되는 함수는 Update() 함수이다. 이 함수는 물리연산과 관련된 로직을 제외한 나머지 주기적으로 변하는 로직을 넣을때 사용하는 함수이다.
*FixedUpdate()와는 달리 컴퓨터 사양에 따라서 실행 주기가 떨어질 수 있다. (프레임이 떨어질 수 있다)
보통 Update()는 (게임에서 볼 수 있는) 60프레임으로 실행된다. 하지만 환경에 따라서 Update() 실행주기가 FixedUpdate() 실행주기보다 더 실행될 수도 있고, 덜 실행될 수도 있다.
5. Update()가 실행된 후에는 LateUpdate()라는 함수가 실행된다. 이 함수는 모든 업데이트가 끝난 후, 마지막으로 실행되는 함수이다.
보통 여기에는 캐릭터를 따라가는 카메라의 움직임이나, 로직의 후처리 등이 입력된다.
Update()와 LateUpdate()는 같은 횟수로 프레임을 실행한다.
이제 어떠한 이유로 '오브젝트 삭제'를 하게 된다면, 이 오브젝트는 해체 영역으로 들어간다. [OnDestroy()]
6. 그 중에서도 실행되는 함수는 OnDestroy()이다. 이 오브젝트는 게임 오브젝트가 삭제되기 직전에 무엇인가 남기고 삭제된다는 의미로 쓰인다.
어떻게 보면 Awake()와 반대되는 역할이라고 생각할 수 있다.
유니티에서 실행을 하게되면 LateUpdate()의 로직까지 실행되다가, 실행 중에 LifeCycle 스크립트 파일이 적용되어있는 오브젝트를 삭제하게되면, 그제서야 해체 영역의 OnDestroy() 로직이 실행된다.
게임 오브젝트는 사실 삭제하지 않고, 키고 끌 수 있다. 이것을 활성화/비활성화라고 부른다.
우선 활성화 영역부터 알아본다. [OnEnable()]
오브젝트가 활성화될 때는 초기화 영역과 물리연산 영역 사이에 위치한다.
Awake()보다는 늦게, Start()보다는 빠르게 실행된다. (따라서 Awake()와 Start() 사이에 위치한다)
A. 여기에는 OnEnable()이라는 함수를 사용한다. 이 함수는 게임 오브젝트가 활성화되었을 때 사용하는 함수이다.
초기화 영역의 Awake(), Start()와는 달리, 최초 1회 실행이 아니라 키고 끄고 할 때마다 실행이 된다.
이렇게 활성화 영역이 있다면, 비활성화 영역도 있다. [OnDisable()]
비활성화 영역을 호출하는 시점은 모든 업데이트가 끝난 후, 오브젝트가 비활성화되거나 삭제될 때 실행된다.
B. 여기에 사용하는 함수는 OnDisable()이다. 이것은 게임 오브젝트가 비활성화 또는 삭제될때 실행되는 함수이다.
'개발 > 유니티' 카테고리의 다른 글
실제와 같은 물체 만들기 (0) | 2024.01.18 |
---|---|
이동거리를 공평하게, 델타타임 (0) | 2024.01.18 |
목표지점으로 이동시키기 (0) | 2024.01.18 |
키보드 마우스 이동하기 (0) | 2024.01.18 |
[유니티] 인터페이스 및 조작법 (0) | 2024.01.17 |