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를 상속받는 클래스이며, 싱글톤임 객체임
다른 객체에 코루틴 수행을 미룰 수 있음.