오늘은 코루틴을 사용하고, 게임 시작 직전 딜레이 시간을 주는 방법에 대해 알아 보았다.
먼저 시간을 보여줄 UI Text를 캔버스 안에 생성 후 캔버스에 DelayTimeMain이라는 이름을 가진 스크립트를 컴포넌트 해준다.
코루틴을 사용하는 방법은 아래와 같다.
StartCoroutine("TimeDelay"); //호출 함수 이름과 아래 IEnumerator 이름이 같아야 함.
IEnumerator TimeDelay(){
yield return new WaitForSeconds(1.0f); //1초 딜레이 함.
}
public class DelayTimeMain : MonoBehaviour
{
[SerializeField] private Text TextTime; //선언된 UI Text
private bool Timebool = true; //코루틴 호출을 위한 논리형 변수
public int DelayCount = 3; //화면에 띄어 줄 정수형 변수
// Update is called once per frame
void Update()
{
//만약 정수형 변수가 0 이라면
if (DelayCount == 0)
{
//코루틴 정지
StopCoroutine("TimeDelay");
}
//만약 논리형 변수가 참 이라면
if (Timebool)
{
//코루틴 호출
StartCoroutine("TimeDelay");
}
}
//코루틴 호출
IEnumerator TimeDelay()
{
Timebool = false;
//UI Text에 정수형 변수 정의
TextTime.text = DelayCount.ToString();
//1초 후
yield return new WaitForSeconds(1.0f);
Debug.Log(DelayCount);
//정수형 변수 1빼기
DelayCount--;
//만약 정수형 변수가 0이면
if (DelayCount == 0)
{
//텍스트 판넬을 사라지게 함
GameObject.Find("TimePanel").SetActive(false);
}
//다시 논리형 변수 참으로 코루틴 호출
Timebool = true;
}
}
다음과 같이 스크립트를 작성 후 캔버스 안의 스크립트에 생성된 TextTime에 생성한 Text를 참초, 이후 실행하면 아래와 같이 3초의 딜레이 값을 가질 수 있다.
또, 딜레이 값을 달리 하고 싶다면 위의 정수형 변수를 조절 하여 사용한다면 편리하다.
유니티 float형 소수점 올림, 내림 CeilToInt(), FloorToInt() (0) | 2020.06.09 |
---|---|
유니티 시간 스톱워치 Time.deltaTime (0) | 2020.06.08 |
유니티 디렉토리파일 폴더 만들기 CreateDirectory() (0) | 2020.06.03 |
유니티 오브젝트 상속 (0) | 2020.06.03 |
유니티 오브젝트 불러오기 Resources.Load() (0) | 2020.06.02 |
댓글 영역