유니티 Script를 작성하다 보면 숫자로 된 문자열을 정수형 혹은 실수형으로 정수형, 실수형을 문자열로 변경해야 하는 경우가 생깁니다. 이렇게 자료형을 변경하는 것을 형 변환이라고 합니다.
묵시적 형 변환과 명시적 형 변환
묵시적 형 변환은 형 변환을 할때 값의 손실이 없는 경우 사용하는 방식으로 정수 값을 실수 값으로 바꾸는 경우가 대표적입니다. 묵시적 형 변환의 경우는 특별한 코드 작성 없이 변환을 원하는 변수에 대입만 해주면 됩니다. 명시적 형 변환은 데이터 손실이 있는 경우 위험을 감수하고 형을 변환하는 방식입니다. 실수 값을 정수로 변경하는 경우가 대표적입니다. 명시적 형 변환의 경우는 형 변환을 위해서는 형 변환할 변수 앞에 자료형을 입력해 줘야 합니다. 만약 float를 int로 변경해야 한다면 아래 코드처럼 a = (int) b; 와 같이 자료형을 앞에 입력해줘야 합니다.
public class NewBehaviourScript : MonoBehaviour
{
int a = 1;
float b = 1.45f;
int c = 3;
float d = 3.14f;
void Start()
{
b = a;
c = (int)d;
}
}
정수형 a, c와 실수형 b, d 변수를 만들고 값을 할당해준다. b에 a의 값을 할당해줄 때는 묵시적 형 변환이기 때문에 특별한 코드 작성 없이 대입을 해준다. 그러나 c에 d의 값을 할당해줄때는 명시적 형변환이기 때문에 할당해주는 변수 앞에 변환하고자 하는 자료형을 입력해준다.
(문자열 -> 숫자형), (숫자형-> 문자형)으로 변환
문자열을 숫자형으로 변환할 때 사용하는 방법은 두 가지 방법이 있습니다. 첫 번째 방법은 Parse 메서드를 사용하는 방법이다. 두 번째 방법은 using System을 입력해야 사용가능한 방법으로 Convert 메소드를 사용하는 방법입니다. 숫자형을 문자열로 변환하는 방법은 변환하고자 하는 변수에 ToString 메소드를 사용하면 됩니다.
using UnityEngine;
using System;
public class NewBehaviourScript : MonoBehaviour
{
string a = "3.14";
int b = 5;
float c = 6.78f;
void Start()
{
//숫자형 -> 문자열
string str_int = b.ToString();
Debug.Log(str_int);
Debug.Log(str_int.GetType());
string str_float = c.ToString();
Debug.Log(str_float);
Debug.Log(str_float.GetType());
//문자열-> 숫자형 첫 번째 방법
int i = int.Parse(str_int);
Debug.Log(i);
Debug.Log(i.GetType());
float f = float.Parse(str_float);
Debug.Log(f);
Debug.Log(f.GetType());
//문자열-> 숫자형 두 번째 방법
int i_str = Convert.ToInt32(str_int);
Debug.Log(i_str);
Debug.Log(i_str.GetType());
float f_str = Convert.ToSingle(str_float);
Debug.Log(f_str);
Debug.Log(f_str.GetType());
}
}
숫자 형태의 문자열 a, 정수형 b, 실수형 c 변수를 만들고 값을 할당해준다. 숫자형 b, c 변수의 값을 문자열로 변경하고 값을 담아주기 위해서 str_int, str_float 변수를 새로 만들어 줍니다. 그리고 b, c 변수에 ToString()메서드를 이용하여 값을 문자열로 변환해서 변수에 할당해줍니다. 변환된 문자열을 다시 숫자형으로 변환하기 위해서 i, f , i_str, f_str 변수를 만들어줍니다. 그리고 첫 번째 방법을 사용하여 문자열을 숫자형으로 변환해주고 i, f에 값을 할당해줍니다. 두 번째 방법을 사용하기 위해 가장 위에 using System을 작성하고 Convert 메소드를 사용합니다. 이때 실수형은 Tofloat이 아니라 ToSingle을 이용하여 형 변환을 합니다. 형 변환된 값은 i_str, f_str 변수에 저장됩니다. GetType() 메서드는 변수의 자료형을 확인할 수 있는 메서드입니다. 아래 이미지는 각 변수에 할당된 값과 변수의 자료형을 출력한 이미지입니다.