티스토리 뷰

1월 29일 강의에서는 간단하게 조건문에 대해 지식을 바로잡았다. 금일 강의부터 강의 내용을 기록하는 이유는, 저번주 강의 시간에서는 너무나 간단하게 자료형이나 유니티에 대해 다루었기 때문에 기존에 알던 지식을 굳이 기록할 필요를 느끼지 않았다. 하지만 금일 강의에서는 새롭게 알게 된 내용이 많아 기록을 결심하게 되었다.

크게 if문, switch문, enum에 대해 배웠고, 기존 대학에서 C언어를 거의 마스터했기 때문에 간단하게 이해할 수 있었다. 하지만 내부에서 새롭게 알게 된 용법도 몇 가지 있었다. 그에 대해 기록해두려 한다.

 

if문 용법 :

1. if .. else ..문 : 서로 상반 관계일 때 주로 사용한다. 예를 들어, 캐릭터가 죽거나 살아있는 경우를 다룰 때이다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class IFSelectComponent : MonoBehaviour
{
    public int hp;

    void Start()
    {
        hp = Random.Range(10, 101);

        bool IsDie = hp <= 0;

        if(IsDie) //결과가 참이면 실행되는 코드가 동작됨
            Debug.Log("플레이어가 뒤로 넘어지면서 으악! 소리를 내며 사망합니다.");
        else
            Debug.Log("플레이어가 생존하여 손을 올리며 고함을 칩니다.");
    }
}

 

 

2. if .. else if .. (else ..)문 : 여러 개의 조건 중 한 가지의 조건만 참이 되어야 할 경우에 사용한다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class IFSelectComponent : MonoBehaviour
{
    public int hp;

    void Start()
    {
        hp = Random.Range(10, 101);

        //플레이어가 사망했는지를 판단
        bool IsDie = hp <= 0; //관계연산식 => 조건식

        if (hp >= 40)
            Debug.Log("플레이어의 체력이 " + hp + "만큼 남았습니다.");
        else if (hp > 0)
            Debug.Log("플레이어의 체력이 " + hp + "만큼 남았으나 현재 위험한 상태입니다.");
        else
            Debug.Log("플레이어가 뒤로 넘어지면서 으악! 소리를 내며 사망합니다.");
    }
}

 

 

3. if .. if ..문 : 한 가지의 조건 뿐만 아니라 다른 조건까지 참이 되어야 하는 경우가 있으면 사용한다. 아직 적절한 예시는 생각해보지 못했지만, 이건 처음 접해보는 용법이다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class IFSelectComponent : MonoBehaviour
{
    public int hp;

    void Start()
    {
        hp = Random.Range(10, 101);

        bool IsDie = hp <= 0; //관계연산식 => 조건식

        if (hp >= 40)
            Debug.Log("플레이어의 체력이 " + hp + "만큼 남았습니다.");
        if (hp > 0 && hp < 40) //두가지 조건이 모두 합당할 때만 true 결과를 만들고 싶을 때 : &&(and)
            Debug.Log("플레이어의 체력이 " + hp + "만큼 남았으나 현재 위험한 상태입니다.");
        if (hp <= 0)
            Debug.Log("플레이어가 뒤로 넘어지면서 으악! 소리를 내며 사망합니다.");

    }
}

 

switch문 용법 : case에 따라 서로 다른 기능이 발휘되는 것이 가능한 조건문. 모든 switch는 if문으로 변경이 가능하지만, 모든 if문을 switch문으로 변경할 수는 없다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SwitchSelectComponent : MonoBehaviour
{
    void Start()
    {
        int characterType = 0; // 1:플레이어, 2:크리쳐, 3:메카닉, 4:펫, 5:장애물

        characterType = Random.Range(1, 6);

        Debug.Log("선택 캐릭터 타입 : " + characterType);

        switch (characterType)
        {
            case 1:
                Debug.Log("현재 캐릭터는 플레이어 타입입니다.");
                break;
                //if문의 case 조건식이 or 조건절로 형성될 때는 break 제거를 통해 switch문으로 아래와 같이 구현이 가능함
            case 2:
            case 3:
            case 5:
                Debug.Log("현재 캐릭터는 몬스터 타입입니다.");
                break;
            default:
                Debug.Log("현재 캐릭터는 소환수 타입입니다.");
                break;
        }
    }

}

 

enum 용법 : switch문을 작성할 때, 때로는 업데이트나 보수를 진행할 때 더한 시간과 노력이 들 수고를 덜기 위해 사용하는 열거형 용법.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SwitchSelectComponent : MonoBehaviour
{
    public enum CHARACTER_TYPE { PLAYER, CREATURE, MECHANIC, PET, OBSTACLE }; //캐릭터 열거형 타입
    // Start is called before the first frame update
    void Start()
    {
        int characterType = 0; // 1:플레이어, 2:크리쳐, 3:메카닉, 4:펫, 5:장애물

        characterType = Random.Range(1, 6);

        Debug.Log("선택 캐릭터 타입 : " + characterType);
        

        //랜덤으로 뽑은 정수형 몬스터 타입을 열거형으로 변환
        CHARACTER_TYPE cEnumValue = (CHARACTER_TYPE)characterType;

        switch (cEnumValue)
        {
            case CHARACTER_TYPE.PLAYER:
                Debug.Log("현재 캐릭터는 플레이어 타입입니다.");
                break;
            case CHARACTER_TYPE.CREATURE:
            case CHARACTER_TYPE.MECHANIC:
            case CHARACTER_TYPE.OBSTACLE:
                Debug.Log("현재 캐릭터는 몬스터 타입입니다.");
                break;
            default:
                Debug.Log("현재 캐릭터는 소환수 타입입니다.");
                break;
        }
    }
}

 

평소에 잘 다루지 않던 switch나 enum 용법을 매우 의미있게 학습하는 시간이었다.