일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 출처 : https://joshua1988.github.io/web-development/javascript/promise-for-beginners/
- https://velog.io/@velopert/create-typescript-react-component
- toString
- 게시판
- 출처 : https://webdir.tistory.com/506
- http://jeonghwan-kim.github.io/dev/2019/06/25/react-ts.html
- object
Archives
- Today
- Total
Back Ground
[MonoBehaviour] LifeCycle 본문
MonoBehaviour
MonoBehaviour는 모든 스크립트가 명시적으로 상속받는 기본 클래스
LifeCycle함수가 갖고 있다. (Start(), Awake(), Update(), FixedUpdate(), 와 OnGUI().. 등 )
그 밖에도 Unity엔진 제어할 여러 함수를 갖고 있다.
[참고 문서] 링크
LifeCycle (생명주기)
Scene에서 살아가는 일정한 흐름이 있다.
엔진에서 자동으로 호출해주는 함수들인데 이 패턴의 흐름을 모아 '생명 주기(Life cycle)'라고 한다.
아래 그림을 보면 어떤 생명주기를 갖고 있는지 알 수 있다.
- 첫 'Awake', 'OnEnable', 'Start'함수는 객체가 생성될 때 1회 호출되는 함수다.
- 단, OnEnable은 스크립트에서 객체를 활성화/비활성화시킬 경우가 있는데 객체가 활성화 되었을 때마다 호출되는 함수이다.
- Update는 3가지 종류가 있다. 'FixedUpdate', 'Update', 'LastUpdate'다.
- 가장 기본적인것이 Update로 매 프레임 마다 실행된다. 일반적으로 유니티를 처음 시작했다면 이 부분에서 거의 모든 로직을 처리할 것이다.
- 그 뒤에 있는 LastUpdate가 바로 Update다음으로 실행된다. Update에서의 결과가 전부 반영된 뒤 작업하고 싶다면 LastUpdate에서 작업하는 것이 맞을 것이다. (ex. 카메라 이동 처리)
- FixedUpdate는 고정된 프레임 주기로 호출되는 함수들이다. Update는 디바이스의 성능이나 게임의 최적화 상황에 따라 framerate가 변하게 되는데 이렇게 되면 프레임 사이사이의 시간 간격이 다르게 적용된다. 이렇게 되면 물리적인 계산이 필요할 때 상당한 오차가 발생할 수 있다. 그래서 시간 간격이 고정된 FixedUpdate에서 처리해주는 것이 좋다.
- 이렇게 미리 생명 주기를 파악하고 내가 원하는 동작이 어느 동작이 보장되고나서 실행되는지 알고 있어야 게임에 적합한 프로그래밍을 할 수 있다.
실제 어떻게 동작하는지 직접 코드로 입력해서 알아보았다.
public class NewBehaviourScript : MonoBehaviour {
float cnt=0;
void Reset(){
Debug.Log("Reset");
}
void Awake(){
Debug.Log("Awake");
}
void OnEnable(){
Debug.Log("OnEnable");
}
void Start(){
Debug.Log("start");
}
void FixedUpdate(){
Debug.Log("FixedUpdate");
}
void Update (){
Debug.Log("Update");
if ((cnt+=Time.deltaTime) >1.0f) Destroy(this.gameObject);
}
void LateUpdate(){
Debug.Log("LastUpdate");
}
void OnWillRenderObject(){
Debug.Log("OnWillRenderObject");
}
void OnGUI(){
Debug.Log("OnGUI");
}
void OnDisable(){
Debug.Log("OnDisable");
}
void OnDestroy(){
Debug.Log("OnDestroy");
}
}
[결과] - 실행 순서 주목
[Script 컴포넌트를 추가했을때]
[게임 실행 후]
'Unity > Unity Engine' 카테고리의 다른 글
Unity - Vector란 (0) | 2021.05.05 |
---|---|
Unity - Vector3 Class를 사용하여 이동 (0) | 2021.05.05 |
[Sprite] Filter Mode (0) | 2021.03.19 |
[Sprite] Pixels Per Unit (PPU) (0) | 2021.03.19 |
[Sprtie] Sprite Mode (0) | 2021.03.19 |
Comments