이 글은 PC 버전 TISTORY에 최적화 되어있습니다.
서론
간단하게 if문, switch문, ?문의 3가지 조건문에 대해서 알아보고, 유니티에서 어떻게 쓰일지 생각해보는 시간을 가지도록 하겠습니다.
if문
if문은 무척 유용하게 쓰입니다. 예를 캐릭터의 피가 40%가 되면 경고를 띄우고 0이 되면 죽는다던가, 돈이 5000원이 되면 무기를 살 수 있다던지 다양한 곳에 수도 없이 쓰이는 것이 if 문입니다. 가장 많이 사용하는 기본적인 조건 판단 구문이죠.
if (조건 판단을 위한 식 / 참 거짓 값) {
} else if (조건 판단을 위한 식 / 참 거짓 값) {
} else {
}
위와 같이 사용하며, if ( ) 안의 내용이 참일 때는 상단 { } 안의 코드가 실행되고 else if ( ) 내용이 참이면 else if 문의 { } 블록이, 두 조건에 만족하지 못하면 else { } 블록이 실행되는 구조입니다. 만약 { } 내의 코드가 한 줄이라면 { }는 생략가능하고, else if와 else 문도 생략 가능합니다.
using UnityEngine; using System.Collections; public class MouseTest : MonoBehaviour { int Hp = 100; // Use this for initialization void Start () { } // Update is called once per frame void Update () { } void OnMouseDown() { if(Hp > 0) // Hp가 0이면 피가 깎이지 않게 Hp = Hp - 10; print ("Hp : " + Hp); // Hp를 보여준다. if (Hp > 0 && Hp <= 40) { // Hp가 0보다 크고 40이하이면 죽을 위기 print ("You'll Die"); } else if (Hp == 0) { // Hp가 0이면 Die print ("You Die"); } else { // 그 외의 상황엔 살아있음 print ("You Alive"); } } }
사용 예시는 위와 같으며 주석을 보시면 충분히 이해하실 수 있으실 것 입니다. OnMouseDown( ) 메소드가 생소하신 분은 여기를 참고하세요. if 문에 대해서 더 알고 싶으신 분들은 Microsoft Developer를 참조하세요.
Switch문
if문은 위와 같이 특정 조건이 true인지 false인지를 비교할 때 유용합니다. switch 문은 여러 선택지 중 한 방향으로 분기할 수 있게 합니다. 물론 if 문도 항상 두 가지로만 분기하는 것이 아닌 if else, if else if 문과 같이 여러 갈래로 분기할 수 있지만 가독성과 편리함이 떨어집니다.
switch (비교를 위한 변수) {
case 비교를 위한 값1:
참일 때 수행할 명령문
break;
case 비교를 위한 값2:
참일 때 수행할 명령문
break;
...
default:
다른 모든 상태의 기본 명령문
break;
}
사용 방법은 위와 같습니다. 비교를 위한 변수를 받아서 검사 후 합당한 case 문을 실행합니다.
using UnityEngine; using System.Collections; public class MouseTest : MonoBehaviour { enum State {Idle, Walk, Chase, Attack, Dead}; State state = State.Idle; void OnMouseDown() { state = State.Dead; switch(state){ case State.Dead: print ("state is Dead."); break; case State.Chase: print ("state is Chase."); break; case State.Attack: print ("state is Attack."); break; case State.Idle: print ("state is Idle."); break; default: print ("state is Idle."); break; } } // Use this for initialization void Start () { } // Update is called once per frame void Update () { } }
사용예시는 위와 같습니다. 열거형을 이용하여 가독성을 높인 switch 문으로 주인공의 상태에 따라 행동을 취하게 되어있습니다. 열거형에 대해 모르시는 분은 여기를 참조하세요. switch문에 대해서 더 알고 싶으신 분들은 Microsoft Developer를 참조하세요.
? 문
?문은 조건문을 축약할 수 있는 유용한 구문입니다. 하지만 길고 더 복잡한 조건문을 만들 수 있으므로 if else 문과 switch문을 사용하기를 추천합니다.
(조건 판단을 위한 식 / 참 거짓 값) ? expression_1 : expression_2;
사용 방법은 위와 같습니다. 맨 앞의 문장이나 참 거짓 값을 판별하여 참이면 expression_1을 거짓이면 expression_2를 실행합니다.
using UnityEngine;
using System.Collections;
public class MouseTest : MonoBehaviour {
enum State {Idle, Walk, Chase, Attack, Dead};
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
// 높이가 0 이하면 사라지게 해야함.
bool shoulddie = (transform.position.z < 0) ? true : false;
// SetActive : 표시 여부를 지정 (true : 표시, false : 표시 X)
gameObject.SetActive (!shoulddie);
}
}
위와 같이 편리하게 사용할 수 있습니다.
반응형
'Frontend > Unity' 카테고리의 다른 글
[유니티 C# 기초 강의] 9. 프로퍼티 (8) | 2016.07.25 |
---|---|
[유니티 C# 기초 강의] 8. 반복문 (2) | 2016.07.25 |
[유니티 C# 기초 강의] 7. 배열 (3) | 2016.07.25 |
[유니티 C# 기초 강의] 5. 열거형 (12) | 2016.07.24 |
[유니티 C# 기초 강의] 4. 주석 (0) | 2016.07.24 |
[유니티 C# 기초 강의] 3. 함수 (8) | 2016.07.24 |