๐ŸŽฎ Unity Study/Unity

[Unity LifeCycle] ์œ ๋‹ˆํ‹ฐ ์ƒ๋ช…์ฃผ๊ธฐ

ibelieveinme 2022. 12. 1. 18:31
728x90

1. Editor ๊ด€๋ จ

Editor ๋ชจ๋“œ์—์„œ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ๋•Œ ๋ฐ”๋กœ ๋ฐ˜์˜๋œ๋‹ค. Script์—์„œ ๋ณ€์ˆ˜๋ฅผ ํ• ๋‹นํ•˜๊ณ  ๋‹ค์‹œ Editor๋กœ ๋Œ์•„์˜ค๋ฉด ๋กœ๋”ฉ์ด ๋ฐœ์ƒํ•˜๊ณ  public ์œผ๋กœ ์„ ์–ธํ–ˆ๋‹ค๋ฉด Inspector ์ฐฝ์—์„œ ๋ณ„๋„์˜ ์‹คํ–‰๊ณผ์ • ์—†์ด ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

Reset(): Object๋ฅผ ์ƒ์„ฑํ•˜๊ณ  Inspector ์ฐฝ์—์„œ Reset ํ•  ๋•Œ ์‹คํ–‰๋œ๋‹ค. Object์˜ ๊ฐ’์€ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ์„ค์ •ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

 

2. Initialization ๊ด€๋ จ

: ์ดˆ๊ธฐํ™” ํ•จ์ˆ˜๋“ค์ด ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์กด์žฌํ•˜๋ฉฐ ์ˆœ์„œ์— ๋”ฐ๋ผ์„œ ์ ์ ˆํ•œ ๋ฐฐ์น˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

: ์”ฌ์ด ์‹œ์ž‘ํ•  ๋•Œ ํ•œ๋ฒˆ๋งŒ ํ˜ธ์ถœ๋œ๋‹ค.

 

Awake(): Play ๋ชจ๋“œ์—์„œ Scene์ด ์‹œ์ž‘๋˜๊ณ  Prefab์˜ ์ธ์Šคํ„ด์Šคํ™” ์งํ›„์— ํ˜ธ์ถœ๋œ๋‹ค. ์‹œ์ž‘ ์‹œ ํ•œ ๋ฒˆ๋งŒ ํ˜ธ์ถœ๋˜๋ฉฐ Object๊ฐ€ ๋น„ํ™œ์„ฑํ™” ๋˜์–ด ์žˆ์–ด๋„ ํ˜ธ์ถœ๋œ๋‹ค.

* Prefab ์ธ์Šคํ„ด์Šค๋ž€: ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋†“์€ ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ(Prefab)์„  ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋งŒ๋“ ๋‹ค๋Š” ๋œป.

 

OnEnable(): Awake() ๋‹ค์Œ์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๋ฉฐ Scene์ด ์‹œ์ž‘๋˜๊ณ  ํ•œ ๋ฒˆ๋งŒ ํ˜ธ์ถœ๋˜๋Š” Awake๋‚˜ Start์™€ ๋‹ฌ๋ฆฌ Object๊ฐ€ ํ™œ์„ฑํ™” ๋  ๋•Œ๋งˆ๋‹ค ํ˜ธ์ถœ๋œ๋‹ค.

 

Start(): ์ธ์Šคํ„ด์Šค๊ฐ€ ํ™œ์„ฑํ™” ๋œ ๊ฒฝ์šฐ์—๋งŒ ๋‹ค๋ฅธ ์ดˆ๊ธฐํ™” ํ•จ์ˆ˜ ์ดํ›„ & ์ฒซ๋ฒˆ์งธ ํ”„๋ ˆ์ž„ ์—…๋ฐ์ดํŠธ ์ „์— ํ˜ธ์ถœ๋œ๋‹ค. 

 

3. Physics ๊ด€๋ จ

๊ฒŒ์ž„ ๋‚ด์—์„œ ์ด๋ฃจ์–ด์ง€๋Š” ๋ฌผ๋ฆฌ์  ์ž‘์šฉ์€ ๋ฌผ๋ฆฌ ์ฃผ๊ธฐ ๋‚ด์—์„œ ์ด๋ฃจ์–ด ์ง„๋‹ค.

 

FixedUpdate():

Update()์™€ ๋‹ฌ๋ฆฌ ํ”„๋ ˆ์ž„๋งˆ๋‹ค ํ˜ธ์ถœ๋˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ Fixed Timestep์— ์„ค์ •๋œ ๊ฐ’์— ๋”ฐ๋ผ์„œ ์ผ์ •ํ•˜๊ฒŒ ํ˜ธ์ถœ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌผ๋ฆฌํšจ๊ณผ์— ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

 

OnTrigger/Collision - Enter/Stay/Exit

์ถฉ๋Œ์ฒด์˜ ์ถฉ๋Œ์„ ํŒ์ •ํ•˜๋Š” ๊ธฐ๋Šฅ์˜ ํ•จ์ˆ˜๋กœ Enter๋Š” ์ถฉ๋Œ ์ˆœ๊ฐ„, Stay๋Š” ์ถฉ๋Œ ์ค‘, Exit์€ ์ถฉ๋Œ์ด ๋๋‚  ๋•Œ๋ฅผ ํŒ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

Stay์˜ ๊ฒฝ์šฐ ํ”„๋ ˆ์ž„ ๋‹จ์œ„๋กœ ์ถฉ๋Œ๋˜๋Š” ๋™์•ˆ ๊ณ„์† ํ˜ธ์ถœ๋œ๋‹ค.

 

4. Input Events

๋งˆ์šฐ์Šค ์ž…๋ ฅ ํŒ์ •์ด ์ง„ํ–‰๋˜๋Š” ์ฃผ๊ธฐ.

OnMouse Over/Enter/Down/Up/Exit/Drag

 

5. Game Logic

๊ฒŒ์ž„์˜ ์ „๋ฐ˜์ ์ธ ๋™์ž‘๋“ค์˜ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ์ฃผ๊ธฐ.

 

Update(): ํ”„๋ ˆ์ž„ ๋‹น ํ•œ๋ฒˆ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜. ํ•˜๋“œ์›จ์–ด ์„ฑ๋Šฅ์— ๋”ฐ๋ผ ์‹œ๊ฐ„๋‹น ํ”„๋ ˆ์ž„์— ์ฐจ์ด๊ฐ€ ์žˆ์œผ๋ฉฐ ๋ฌผ๋ฆฌ์  ์ž‘์šฉ์ด ์—†๋Š” ๋‹จ์ˆœ ํ‚ค ์ž…๋ ฅ ๋“ฑ์„ ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉํ•จ.

 

yield null/WaitForSeconds/WaitForFixedUpdate/WWW/StartCoroutine : ์ฝ”๋ฃจํ‹ด ์‚ฌ์šฉ์‹œ ์ง€์—ฐ ์‹œํ‚ฌ ์‹œ๊ฐ„๋“ค์˜ ์œ ํ˜•

- null : ํ”„๋ ˆ์ž„์— ๋Œ€ํ•œ ๋ชจ๋“  Update ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋œ ํ›„ ๋™์ž‘

- WaitForseconds : ํ”„๋ ˆ์ž„์— ๋Œ€ํ•œ ๋ชจ๋“  Update ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋œ ํ›„ ์ง€์ •๋œ ์‹œ๊ฐ„ ์ง€์—ฐ ํ›„ ๋™์ž‘

- WaitForFixedUpdate : ํ”„๋กœ์ ํŠธ๋‚ด ๋ชจ๋“  FixedUpdate ํ˜ธ์ถœ ํ›„์— ๋™์ž‘

- WWW : WWW ๋‹ค์šด๋กœ๋“œ ํ›„ ๋™์ž‘

- StartCoroutine : ๋‹ค๋ฅธ ์ฝ”๋ฃจํ‹ด์ด ์™„๋ฃŒ๋  ๋•Œ ๊นŒ์ง€ ๋Œ€๊ธฐ ํ›„ ๋™์ž‘

 

LateUpdate(): Update๊ฐ€ ๋๋‚œ ํ›„ ํ”„๋ ˆ์ž„๋‹น ํ•œ๋ฒˆ ํ˜ธ์ถœ๋จ. ์บ๋ฆญํ„ฐ๋“ค์„ Update()๋ฌธ์—์„œ ์ง„ํ–‰์‹œํ‚ค๊ณ  LateUpdate์—์„œ๋Š” ์บ๋ฆญํ„ฐ๋ฅผ ๋”ฐ๋ผ๋‹ค๋‹ˆ๋Š” ์นด๋ฉ”๋ผ๋ฅผ ๋ฐฐ์น˜์‹œ์ผœ์„œ ์บ๋ฆญํ„ฐ๊ฐ€ ์™„์ „ํžˆ ์›€์ง์˜€๋Š”์ง€๋ฅผ ํ™•์ธํ•œ ํ›„ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ์‚ฌ์šฉํ•จ.

 

6.SceneRendering

์‹ค์ œ๋กœ ํ™”๋ฉด์— ๋ณด์—ฌ์ง€๋Š” ๋ Œ๋”๋ง ๊ตฌ๊ฐ„

OnPreCUll / OnWillRenderObject / OnBecameVisible / OnBecameInvisible / OnPreRender / OnRenderObject / OnPostRender / OnRenderImage

 

7. Gizmo rendering

Gizmo๊ฐ€ ๊ทธ๋ ค์ง€๋Š” ์ง€์ .Gizmo๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Editor๋ชจ๋“œ์—์„œ๋งŒ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ GL ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋นŒ๋“œ ํ™”๋ฉด์ƒ์—์„œ๋„ ํ‘œ์‹œํ•  ์ˆ˜ ์ž‡๋Š”๋ฐ ์ด ๋•Œ ๊ทธ๋ ค์ง€๋Š” ์‹œ์ ์„ Life Cycle์— ๋งž์ถฐ OnPostRender๋กœ ํ•ด์ค˜์•ผ ์ •์ƒ์ ์œผ๋กœ ๊ทธ๋ ค์ง„๋‹ค.

OnDrawGizmos()

 

8. GUI Rendering

GUI ์ด๋ฒคํŠธ์— ๋”ฐ๋ผ ํ”„๋ ˆ์ž„๋งˆ๋‹ค ์—ฌ๋Ÿฌ์ฐจ๋ก€ ํ˜ธ์ถœ๋œ๋‹ค.

๋ ˆ์ด์•„์›ƒ, ๋ฆฌํŽ˜์ธํŠธ -> ๋ ˆ์ด์•„์›ƒ, ํ‚ค๋ณด๋“œ/๋งˆ์šฐ์Šค ์ด๋ฒคํŠธ๊ฐ€ ๊ฐ ์ž…๋ ฅ ์ด๋ฒคํŠธ์— ๋Œ€ํ•ด ์ฒ˜๋ฆฌ ๋œ๋‹ค.

OnGUI()

 

9. Pausing

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ •์ง€๋  ๋•Œ ํ˜ธ์ถœ

OnApplicationPause()

 

10. ์˜ค๋ธŒ์ ํŠธ๋ฅผ ํŒŒ๊ดดํ•  ๋•Œ

OnDestroy(): Object๊ฐ€ ์‚ญ์ œ๋  ๋•Œ ๋งˆ์ง€๋ง‰ ํ”„๋ ˆ์ž„์˜ ์—…๋ฐ์ดํŠธ ํ›„ ํ˜ธ์ถœ๋œ๋‹ค. Destroy(gameObject) ํ˜น์€ Scene ์ข…๋ฃŒ ์‹œ์— ํ˜ธ์ถœ๋œ๋‹ค.

 

11. ์ข…๋ฃŒํ•  ๋•Œ

Life Cycle์˜ ๋์— ํ•ด๋‹นํ•œ๋‹ค. ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ข…๋ฃŒ๋‚˜ Object๊ฐ€ ์‚ญ์ œ๋  ๋•Œ์˜ ์ฃผ๊ธฐ์— ํ•ด๋‹นํ•œ๋‹ค.

 

OnApplicationQuit(): ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ข…๋ฃŒ๋˜๊ธฐ ์ „ ๋ชจ๋“  ๊ฒŒ์ž„ Object์—์„œ ํ˜ธ์ถœ๋œ๋‹ค. Editor์—์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํ”Œ๋ ˆ์ด๋ฅผ ์ข…๋ฃŒํ•  ๋•Œ, ์›น ํ”Œ๋ ˆ์ด์–ด๋ผ๋ฉด ์›น ๋ทฐ๊ฐ€ ๋‹ซํž ๋•Œ ํ˜ธ์ถœ๋˜๋Š” ๊ฒƒ.

OnDisable(): ์ด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” Script๋ฅผ ๊ฐ€์ง„ Object๊ฐ€ ๋น„ํ™œ์„ฑํ™” ๋  ๋•Œ๋งˆ๋‹ค ํ˜ธ์ถœ๋œ๋‹ค.

 

 

[์ฐธ๊ณ ์ฐธ๊ณ ]

https://docs.unity3d.com/kr/2022.3/Manual/ExecutionOrder.html

 

์ด๋ฒคํŠธ ํ•จ์ˆ˜์˜ ์‹คํ–‰ ์ˆœ์„œ - Unity ๋งค๋‰ด์–ผ

Unity ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์‚ฌ์ „์— ์ง€์ •ํ•œ ์ˆœ์„œ๋Œ€๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ด๋ฒคํŠธ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด ํŽ˜์ด์ง€์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์ด๋ฒคํŠธ ํ•จ์ˆ˜๋ฅผ ์†Œ๊ฐœํ•˜๊ณ  ์‹คํ–‰ ์‹œํ€€์Šค์— ์–ด๋–ป๊ฒŒ ํฌํ•จ๋˜๋Š”์ง€ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

docs.unity3d.com

https://bakcoding.github.io/unity3d/unity3d001-lifecycle/

 

์œ ๋‹ˆํ‹ฐ ๋ผ์ดํ”„ ์‚ฌ์ดํด

unity3d, engine, lifecycle

bakcoding.github.io

 

728x90