타이머로 생성하기
Coddy Unity 여정의 Unity 스크립팅 기초 섹션에 포함된 레슨. 67개 중 49번째.
몇 초마다 무언가를 생성하는 생성기에는 타이머가 필요합니다. Time.deltaTime은 마지막 프레임이 걸린 시간이므로, 매 Update()마다 필드에 더하면 경과한 초를 알 수 있습니다. 합계가 간격에 도달하면 생성하고, 합계에서 간격을 뺍니다.
이 분수는 0.5초마다 물방울을 하나씩 뿜어냅니다.
public GameObject dropPrefab;
public float interval = 0.5f;
float timer;
void Update()
{
timer += Time.deltaTime;
if (timer >= interval)
{
Instantiate(dropPrefab, transform.position, Quaternion.identity);
timer -= interval;
}
}timer -= interval은 남은 시간을 유지합니다. 프레임이 0.51초에 끝났다면 다음 0.5초는 0.01초부터 세기 시작하므로 물방울이 일정한 박자에 맞춰 떨어집니다. timer = 0으로 설정하면 남은 시간이 버려지므로 물방울이 매번 조금씩 늦게 떨어지고, 긴 게임에서는 지연이 누적됩니다. Inspector에서 timer를 설정할 필요가 없으므로 비공개 변수입니다.
챌린지
중급Dropper는 interval초마다 상자를 하나씩 떨어뜨려야 합니다(Inspector에는 2라고 표시됨). 첫 번째 상자는 Play를 누른 후 2초 뒤에 떨어지고, 그다음부터는 2초마다 하나씩 더 떨어집니다.
- 각 상자를 Dropper의 위치에 회전 없이 생성합니다.
- 상자를 생성할 때마다 번호를 기록합니다:
Box 1,Box 2등.
Play를 누르고 상자가 쌓이는 모습을 지켜본 다음, Check를 누르세요.
직접 해보기
using UnityEngine;
public class BoxDropper : MonoBehaviour
{
public GameObject boxPrefab;
public float interval = 1f;
void Update()
{
// interval초마다 상자를 떨어뜨리고 "Box 1", "Box 2"...를 로그에 기록합니다
}
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.