Unity&C#/Unity

[Unity] Monobehaviour를 상속받지 않은 클래스에서 Coroutine 실행하기

리네엔 2024. 10. 20. 03:10

몇 초뒤 실행되는 함수를 구현하려면?

  • Invoke(function, time)
    • time뒤 function을 실행시키는 아주 간단한 방법.
    • 하지만 Monobehaviour를 상속받는 클래스에서만 사용할 수 있음.
  • Coroutin
    • 몇초마다, 몇초뒤 행동을 수행하는 간단한 방법
    • 이 또한 Monobehavour 를 상속받는 클래스에서 코루틴을 시작시킬 수 있음.
  • Task
    • 비동기 프로그래밍으로 수행하는 방법
    • 유니티의 타이밍이랑 안맞을 수 있음.

Task는 사용하기 싫은데.. 몇 초후에 실행되는 함수를 사용하려면..

다른 객체에서 StartCoroutine을 시작시키면됨.

public class TimeControl : IItemEffect
{
// 생략
    public void Affect()
    {
        Time.timeScale = _controlTime;
        Game.Instance.StartCoroutine(Applying(_duration));
    }
    public IEnumerator Applying(float delay)
    {
        yield return new WaitForSeconds(delay);
        Time.timeScale = 1f;
    }
}

Game은 Monobehviour를 상속받는 클래스이며, 싱글톤임 객체임
다른 객체에 코루틴 수행을 미룰 수 있음.

'Unity&C# > Unity' 카테고리의 다른 글

[Unity] Rigidbody ForceMode  (0) 2024.10.29
[Unity] Tag와 Layer의 성능차이  (0) 2024.10.28
[Unity] OvelapSphere  (0) 2024.10.17
[Unity] Resources.UnloadAsset()  (1) 2024.10.16
[Unity] Input system - multitap value issue  (0) 2024.10.15