Menu
CoddyTech

Invoke

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

Invoke("Explode", 3f)는 지금부터 3초 뒤에 스크립트 자체의 메서드 Explode를 한 번 호출하며, 그 뒤의 코드는 즉시 계속 실행됩니다. Unity는 문자열로 주어진 이름을 사용해 메서드를 찾으며, 이 메서드는 매개변수를 받지 않습니다. 이 폭탄은 게임이 시작된 뒤 3초 후에 폭발합니다.

void Start()
{
    Invoke("Explode", 3f);
}

void Explode()
{
    Debug.Log("Boom");
    Destroy(gameObject);
}

이름이 문자열이므로 컴파일러는 이를 검사할 수 없습니다. Invoke("Explod", 3f)는 컴파일되지만, 3초 뒤 Unity는 폭발하는 대신 Trying to Invoke method: Bomb.Explod couldn't be called.를 로그에 기록합니다. C#의 nameof를 사용하면 이 문제를 해결할 수 있습니다. nameof(Explode)는 컴파일러가 검사한 이름으로 만든 문자열 "Explode"이므로, 그 안에 오타가 있으면 게임을 실행하기 전에 컴파일 오류가 발생합니다. Invoke(nameof(Explode), 3f);라고 작성하세요.

challenge icon

챌린지

쉬움

플레이어가 플랫폼에 착지한 직후 플랫폼이 무너지도록 하세요.

  1. OnCollisionEnter에서 collision.gameObject.CompareTag("Player")일 때 Invoke(nameof(Fall), delay);를 호출하세요.
  2. void Fall()을 추가하세요. body.isKinematic = false;로 설정하고 Crumble!을 로그로 출력하세요.

‘플레이’를 누르고 플랫폼 위로 걸어가세요. 1초 뒤 플랫폼이 떨어집니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

using UnityEngine;

public class Crumble : MonoBehaviour
{
    public float delay = 1f;
    Rigidbody body;

    void Start()
    {
        body = GetComponent<Rigidbody>();
    }

    void OnCollisionEnter(Collision collision)
    {
        // 플레이어가 착지하면: delay초 후에 플랫폼이 떨어지게 합니다
    }

    // Fall(): 플랫폼의 물리 기능을 활성화하고 Crumble!을 로그에 기록합니다
}

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

직접 연습해 보세요: Unity 플레이그라운드