인생은 도박이라는 말이 있듯이 우리 주변에 행운은 항상 따라다닙니다. 행운이라는 것은 경우의 수 중 한 가지 경우의 수가 선택을 했는데 좋은 경우의 수를 뽑았을 때를 말하고 불운은 그 반대로 안 좋은 경우의 수를 뽑았을 때입니다. 결국 운이라는 것은 수많은 경우의 수에서 한 가지를 선택해서 결과를 보는 것이라고 볼 수 있습니다. 우리가 많이 하는 복불복 게임이나 사다리 타기 게임, 등 다양한 게임들이 모두 운에 따라 결정되는 게임입니다. 게임 안에서 행운의 상자를 열거나 강화를 하거나 하는 것들 모두 운과 관련된 요소를 포함하고 있습니다. 현재 세상에서는 우리가 운을 조절할 수 없지만 프로그램 상에서는 우리가 운을 마음대로 조작할 수 있습니다. 이런 원리는 기본적으로 랜덤이라는 개념을 사용하는데 유니티에서는 랜덤 관련 함수가 있어서 쉽게 경우의 수를 뽑을 수 있습니다. 랜덤 함수에도 다양한 종류가 있지만 이번 예시에서 살펴볼 함수는 범위를 정하고 그 범위 안에 있는 실수(float)와 정수(int)를 뽑아보겠습니다.
C# (UNITY 3D)
Decimal 값을 입력(float, int, 등) 해서 Random 버튼을 누르면 그 사이의 값을 Int와 Float을 반환하는 예시입니다. Int 랜덤 함수는, 원래는 최댓값을 포함하지 않지만 최댓값에 1을 더하여 포함되게 했습니다. 예를 들어 0~1을 입력하면 원래는 0만 나와야 맞지만 0, 1 모두 입력하게 처리했습니다.
using UnityEngine.UI;
Text와 Button을 사용하기 위해 UnityEngine.UI 사용
각 컴포넌트에 대한 게임 오브젝트 각 변수에 할당
public InputField inputfield_start;
public InputField inputfield_end;
public Text text_INT;
public Text text_FLOAT;
public Button button_random;
void Start()
{
Init_UI();
}
private void Init_UI()
{
button_random.onClick.RemoveAllListeners();
button_random.onClick.AddListener(Funciton_Random);
inputfield_start.text = "0";
inputfield_end.text = "1";
inputfield_start.contentType = InputField.ContentType.DecimalNumber;
inputfield_end.contentType = InputField.ContentType.DecimalNumber;
}
//CodeFinder 코드파인더
//From https://codefinder.janndk.com/
private void Funciton_Random()
{
float start = float.Parse(inputfield_start.text);
float end = float.Parse(inputfield_end.text);
int random_int = Random.Range(Mathf.CeilToInt(start), Mathf.FloorToInt(end) + 1);
text_INT.text = random_int.ToString();
float random_float = Random.Range(start, end);
text_FLOAT.text = random_float.ToString();
Debug.LogFormat("random_int : {0}, random_float : {1}", random_int, random_float);
}
변수(variable)
inputfield_start : 최솟값
inputfield_end : 최댓값
text_INT : 정수 랜덤 값 표시
text_FLOAT : 실수 랜덤 값 표시
button_random : Funciton_Random 함수 실행
함수(function)
Init_UI : 인풋 필드, 버튼 기능, 등 UI 관련 초기화
Funciton_Random : 랜덤 버튼을 눌렀을 때 범위 안에 있는 int와 float에 대한 랜덤 값 추출해서 표시
DecimalNumber / ContentType / Random.Range / Mathf.FloorToInt / Mathf.CeilToInt
'Unity3D > C#' 카테고리의 다른 글
유니티 랜덤 색상 추출, RGBA color to hex code (0) | 2020.10.30 |
---|---|
Unity Pick Random Image (Random.Range, index) (2) | 2020.10.29 |
유니티 아날로그 시계 구현 (Quaternion.Euler, DateTime.Now) (0) | 2020.10.26 |
유니티 디지털 시계 구현 (DateTime.Now / Time Format) (0) | 2020.10.25 |
유니티 2D 이미지 무한 평면 회전 (Rotate, eulerAngles) (0) | 2020.10.25 |