Menu
CoddyTech

InvokeRepeating, CancelInvoke

Coddy Unity 여정의 물리와 게임플레이 섹션에 포함된 레슨. 63개 중 22번째.

InvokeRepeating(nameof(Blink), 0.5f, 0.5f)는 0.5초 후 처음으로 Blink를 호출하고, 취소될 때까지 이후 0.5초마다 다시 호출합니다. 첫 번째 숫자는 첫 호출 전 대기 시간이고, 두 번째 숫자는 호출 사이의 시간입니다. CancelInvoke(nameof(Blink))는 이 호출을 중지하며, 이름 없이 CancelInvoke()를 호출하면 스크립트에 예약된 모든 Invoke를 중지합니다.

이 경고등은 Space 키를 누를 때까지 깜빡인 다음 계속 켜져 있습니다.

Light lamp;

void Start()
{
    lamp = GetComponent<Light>();
    InvokeRepeating(nameof(Blink), 0.5f, 0.5f);
}

void Blink()
{
    lamp.enabled = !lamp.enabled;
}

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        CancelInvoke(nameof(Blink));
        lamp.enabled = true;
    }
}

생성 챕터의 타이머도 float 필드와 Update()의 검사로 같은 작업을 할 수 있습니다. InvokeRepeating을 사용하면 Unity가 시간을 관리하고 호출을 수행합니다. InvokeRepeating 호출은 Start()에 넣어야 합니다. Update()에 넣으면 프레임마다 반복 호출이 하나씩 더 예약됩니다.

challenge icon

챌린지

쉬움

Geyser는 그 위에 있는 공을 공중으로 던집니다. 스크립트에는 ball, power, eruptions 횟수가 있습니다. 다음 일정에 따라 분출하도록 만드세요:

  • 첫 번째 분출은 Play를 누른 뒤 1초 후에 일어나고, 그다음부터는 2초마다 한 번씩 일어납니다.
  • 분출은 Erupt라는 메서드입니다. 이 메서드는 eruptions를 1 증가시키고, ball.AddForce(Vector3.up * power, ForceMode.Impulse)로 공을 위로 밀어 올리며, Eruption 1, Eruption 2 등을 로그에 기록합니다.
  • 세 번째 분출 후 간헐천은 영원히 멈춥니다.

Play를 눌러 공을 지켜본 다음 Check를 누르세요.

직접 해보기

using UnityEngine;

public class Geyser : MonoBehaviour
{
    public Rigidbody ball;
    public float power = 6f;
    int eruptions;

    void Start()
    {
        // Play 후 1초 뒤에 분출하고, 그다음부터는 2초마다 분출
    }

    // Erupt(): 횟수를 세고, ball을 위로 밀어 올리고, 로그를 남김; 세 번째 이후 중지
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

물리와 게임플레이의 모든 레슨