유니티 C# - Loop 문

황정욱·2022년 10월 28일
0
post-thumbnail

게임을 만들다보면 for문 또는 while문을 굉장히 많이 사용하게 된다. if문과 switch문이 짝이라면 for과 while도 짝이다.
// for문
// for(초기식; 조건식; 증감식)
// {
// 반복될 코드
// }

// while문
// while(조건식)
// {
// 반복될 코드
// }

새로운 Loop 스크립트를 만들고 GameManager에 넣어주고 다른 스크립트는 제거했다.

public class Loop : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        for(int i = 0; i < 10; i++)
        {
            Debug.Log($"{i}");
        }
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

이렇게 작성하면 초기식에 정수 i 를 선언과 동시에 0으로 초기화하고 10까지 1증가시키며 반복한다.
순서는

  1. 조건식이 참인지 확인한다.
  2. 참이면 for문안에 코드를 실행하고 실행이 끝나면 증감식을 토대로 연산한다.
  3. 연산후 조건식이 참인지 또 확인한다.
  4. 조건식이 거짓일 때까지 반복을 한다.
  5. 거짓이되면 for문을 빠져나온다.

그렇기 때문에 0 은 10보다 작으니까 코드를 실행한다. 끝나면 1을 증가시킨다. 1은 10보다 작으니 또 출력. 9까지 가고 또 1을 증가시킨다. 10은 10보다 작지 않기 때문에 코드를 실행시키지 않고 for문을 빠져 나온다.

초기식은 0에서 시작할 필요가 없다.
조건식은 참이나 거짓을 반환하면 된다.
증감식은 ++, --, +=, -=, *=, /=, %= 를 사용해도된다.

for(int i = 0; i < 10;)
	{
		Debug.Log($"{i}");
	}

혹은

for(int i = 0; ;i--)
	{
		Debug.Log($"{i}");
	}

또는

for(; ;)
	{
    	Debug.Log($"{i}");
	}

사용해도 된다. 이것은 무한반복을 의미한다. 하지만 유니티에서 무한반복을 하면 유니티가 먹통이 되기 때문에 유니티를 강제종료 시켜야 한다.

for문을 while문으로 다음과 같이 바꿔서 작성 할 수 있다.

int i = 0;
	while(i < 10)
	{
		Debug.Log($"{i}");
		i++;
    }

이렇게 되면 변수 i가 있는데 i가 10보다 작을동안에 i라는 변수를 출력하고 i를 1증가 시킨다. 글고 다시 조건식으로 돌아와 다시 조건식이 참인지 거짓인지 확인한다. 거짓이면 while문을 탈출하게 된다. 만약에 증감식이 없거나 조건식을 거짓으로 바꿔즈는 코드가 없으면 무한반복을 하게 된다.

만약에 무한반복을 원하는데 특정 조건에만 멈추고 싶거나 특정 조건에 맞추어 코드를 실행시키고 싶으면 for문이나 while문안에 조건문(if, switch ~ case)를 작성하면 된다.

예를 들어 1 부터 100을 출력하는데 짝수만 출력하고 싶고 50에서 멈추고 싶으면 다음과 같이 작성 할 수 있다.

for(int i = 1; i <= 100; i++)
{
	if(i % 2 == 0)
    	Debug.Log($"{i}");
    if (i == 50)
    	break;
}

break;는 switch문에서 배웠는데 for문이나 while문에서 사용할 수 있다. for문이나 while문안에 있으면 해당 for문이나 while문을 즉시 벗어나게 되고 break; 이후의 코드는 무시한다.

profile
C언어, C#, 그리고 유니티

0개의 댓글