<유니티> 프로그래밍/ void Start, void Update

2023. 8. 3. 22:54프로그래밍

유니티 프로젝트에서 

Create  C# Script를 만들어서 들어가 보시면

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class sample : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }
 
    // Update is called once per frame
    void Update()
    {
        
    }
}
 
cs

이런 코드들이 기본적으로 작성되어 나옵니다 

 

void Start()와 void Update()에 대해 알아봅시다

먼저 Start Update 앞에 붙여진 void는 void함수라 부르며 돌려줄(return) 값이 없는 함수를 칭합니다

즉 다시 말해서 어떤 값을 리턴하는 게 아닌 소리를 내 거나 메시지를 보내거나 행동을 취하게 하는 함수라는 것입니다.

 

1. void Start() 함수

다시 돌아와서 Start()가 뭔지 말해보자면 

void Start() 함수 위에 보시면

//Start is called before the first frame update

라는 주석이 달려있습니다

해석해보자면 첫 프레임 업데이트 전 불러오는(실행하는) 함수라는 뜻입니다

즉 처음 실행할 때 최초 한 번 실행하는 함수입니다. 예제로

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class sample : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        Debug.Log("안녕하세요");
    }
 
    // Update is called once per frame
    void Update()
    {
        
    }
}
 
cs

void Start() 함수에 유니티 콘솔에 안녕하세요를 출력하는 코드를 넣어봅시다

그리고 실행하면

이렇게 최초 한 번 안녕하세요가 실행되는 모습을 보실 수 있습니다.

 

2. void Update() 함수

이 함수 앞에도 마찬가지로 

// Update is called once per frame

라는 주석이 쓰여있습니다

해석해보자면 한 프레임마다 불러오는(실행하는) 함수라는 뜻입니다

말 그대로 컴퓨터가 실행하는 한 프레임마다 함수를 실행한다는 것입니다

 

(프레임:fps Frames per second의 약자로 정지된 사진 하나를 프레임이라 하면

이것을 연속적으로 보여줘 영상처럼 만드는 것으로 fps(프레임)이 올라가면 갈수록

부드러워진다) 

 

그럼 이제 이 Update() 함수가 어떤식으로 실행되는지 코드를 작성하고 실행해봅시다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class sample : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }
 
    // Update is called once per frame
    void Update()
    {
        Debug.Log("안녕하세요");
    }
}
 
cs

안녕하세요 실행코드를 Update()함수 안으로 이동시켰습니다. 실행해보면

이렇게 매 프레임마다 안녕하세요를 실행하는게 보입니다

이런 식으로 보이시는 분은 Collapse 기능을 헤제하시면 위처럼 숫자가 늘어나는 형식이 아닌

나열되는 형식으로 보입니다

여기서 주의하셔야할점은 Update 함수는 매 초마다 실행하는 함수가 아닌 매 프레임마다

실행하는 함수로 개인의 컴퓨터 성능에 따라 초당 실행하는 횟수가 다릅니다 만약 매 초당 

실행하는 함수를 쓰시고싶으면 Time.deltaTime을 쓰시면 됩니다

 

3. Awake 함수

더해서 Awake 함수는 start 와 비슷하지만 

start 함수가 호출되기 전에 먼저 호출된다는 점에서 어떤 변수 또는 값을 초기화할 때

주로 이용합니다 예제로

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class sample : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        Debug.Log("안녕하세요");
    }
 
    // Update is called once per frame
    void Awake()    
    {
        Debug.Log("안녕하세요 Awake");
    }
}
 
cs

위처럼 수정한 후 실행해보면

start 함수가 Awake 위에 있음에도 불구하고 Awake 함수가 먼저 호출(실행) 되는 것을 확인할 수 있습니다