본문 바로가기
유니티

메소드 실행 늦추기

by Nhahan 2022. 6. 12.

어떤 경우에 씬을 로드한다고 했을 때, 바로 화면이 전환되어 버리면 유저는 위화감과 어색함을 느낄 수 밖에 없다.

예를 들어 게임오버가 되어 화면이 전환되어야하는데 아무런 피드백도 없이 화면이 바뀐다면 유저는 머리 속에 물음표를 띄울 것이다.

 

그렇다고 SceneManager.LoadScene() 메소드를 조정하는 것도 탐탁지 않은 일이다.

그럴 때 쓰는게 Invoke()이다.

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class FinishLine : MonoBehaviour
{
    [SerializeField] float loadDelay = 1f;
    
    void OnTriggerEnter2D(Collider2D other) {
        if(other.tag == "Player") {
            Invoke("ReloadScene", loadDelay);
            Debug.Log("Restart Game in 1second.");
        }
    }

    void ReloadScene() {
        SceneManager.LoadScene(0);
    }
}

 

사용법은 Invoke("함수명", 딜레이)로 상당히 쉽다.

이후 원하는 로직을 넣어주면 된다.

 

 

 

 

댓글