어떠한 특정 조건을 만족시키면, 이 코드를 실행시키고, 그렇지 않으면 다른 코드를 실행시킬 수 있도록 분기를 나눌 수 있습니다.
지난 시간에 배웠던 bool 형 변수를 이용하여 if 문에 대해서 배워 보겠습니다.
바로 코드부터 볼까요?
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour {
public int currentHP = 70; // 현재 체력
public const int maxHP = 100; // 체력 max
public string name; // 이름
public string guildName; // 길드 명
public int currentLevel = 1; // 현재 레벨
public bool isDead = false; // 살아있는지 여부
private void Start() {
name = "용감한 용사";
guildName = "[유니티용병단]";
Debug.Log(guildName + "Level" + currentLevel.ToString() + " " + name);
if (isDead == false) {
Debug.Log("그는 아직 살아있다.");
} else {
Debug.Log("[게임 오버] 그는 죽었다!");
}
}
}
조금씩 코드가 길어지고 있습니다.
그만큼 여러분이 배우고 있다는 것이 많아지고 있습니다!
복습할겸 기존 예제 코드를 재활용하기 위해 코드가 길어졌어요.
중요한 부분만 추려 볼까요?
플레이어의 이름을 출력하고 나서 이번에는 플레이어의 생존 여부를 문자열로 출력합니다.
isDead 라는 변수가 bool형이고 초기화는 false 로 되어 있습니다.
if (isDead == false) {
Debug.Log("그는 아직 살아있다.");
} else {
Debug.Log("[게임 오버] 그는 죽었다!");
}
프로그램 코드는 위에서부터 아래로 순차적으로 실행됩니다.
그렇다면 위 코드는 어떨까요?
if 라는 분기가 있어서 "그는 아직 살아있다." 라는 코드가 실행될 수도 있고, 그렇지 않으면 "[게임 오버] 그는 죽었다!" 라는 코드가 실행될 수 있기도 합니다.
스크립트가 위에서 아래로 순차적으로 실행되긴 하지만, if 문을 두어서 살아있는지 여부 또는 게임 오버인지 여부를 알 수 있습니다.
이렇듯 if 문은 아주 유용한 문법으로 필수로 알아두어야 합니다.
이제 코드를 조금만 더 변형해 보도록 하겠습니다.
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour {
public int currentHP = 70; // 현재 체력
public const int maxHP = 100; // 체력 max
public string name; // 이름
public string guildName; // 길드 명
public int currentLevel = 1; // 현재 레벨
public bool isDead = false; // 살아있는지 여부
private void Start() {
name = "용감한 용사";
guildName = "[유니티용병단]";
string fullName = guildName + "Level" + currentLevel.ToString() + " " + name;
if (isDead == false) {
Debug.Log(fullName + "는 아직 살아있다.");
} else {
Debug.Log("[게임 오버] 그는 죽었다!");
}
}
}
이번에는 fullName이라는 변수를 새롭게 만들어서 콘솔 창에 출력하는 대신에 문자열을 할당하기만 했습니다.
그리고 isDead 가 false 일 때, "누구누구는 아직 살아있다."가 실행될 수 있습니다.
if 뒤에 나오는 (isDead == false)에서 == 는 연산자라고 하는데, 값이 동일한지 체크를 합니다.
수학에서의 = 와 같다고 볼 수 있죠.
하지만 프로그래밍 언어에서는 = 는 값을 할당하는 연산자이기 때문에 주의할 필요가 있습니다.
자, 이제 스크립트가 어떤 기능을 하는지 유니티 콘솔창을 통해 확인해 볼 시간입니다.
유니티 에디터에서 Player 스크립트를 보면 bool 형의 isDead 변수는 아래와 같이 표시됩니다.
유니티 인스펙터(Inspector)는 변수를 개발자가 읽기 쉽게 약간의 변형을 합니다.
isDead가 아니라 "Is Dead"라고 표시되는데요.
좀 더 읽기 편한 텍스트입니다.
그리고 체크박스가 있는 이유는 bool 형 변수이기 때문에 껏다 켰다를 할 수 있습니다.
지금은 Inspector에 손을 대지 않고 바로 플레이 해보도록 하겠습니다.
[유니티용병단]Level1 용감한 용사는 아직 살아있다.
와 같이 출력이 되는 것을 확인할 수 있습니다.
어떤가요. 지난 시간에 배운 문자열 다루기 시간에서 배운 것을 활용해 보니까 재미있지 않나요.
이번에는 다른 결과를 보고 싶습니다.
스크립트를 수정해도 되지만 이번에는 유니티 인스펙터를 이용해 보겠습니다.
플레이 중인 유니티 에디터를 정지시킵니다.
그리고 Is Dead 변수의 체크박스를 클릭해서 체크를 하도록 하고 다시 유니티 에디터를 플레이 해봅니다.
[게임 오버] 그는 죽었다!
와 같이 출력되었습니다.
어떤가요. if 문은 이렇게 조건을 주어서 (isDead 변수를 true 또는 false로 설정해서) 다른 코드를 실행시킬 수 있도록 하는 필수 문법입니다.
그리고 한 가지 더, 유니티 에디터의 인스펙터 상으로도 변수의 값을 변경할 수 있고, 스크립트로도 가능하다는 점을 잊지 마세요.
유니티의 장점으로 꼽히는 개발 편의성 측면에서 인스펙터를 다루는 것 또한 알아두면 좋습니다.
'SideProjects > [집필] 실전 유니티 C#' 카테고리의 다른 글
[실전 유니티 C#] switch case 문 (0) | 2022.05.01 |
---|---|
[실전 유니티 C#] if 와 else if 와 else (0) | 2022.05.01 |
[실전 유니티 C#] 문자열 다루기 (0) | 2022.05.01 |
[실전 유니티 C#] 상수란 무엇인가 (0) | 2022.05.01 |
[실전 유니티 C#] 데이터 타입 (0) | 2022.04.23 |