몇 초뒤 실행되는 함수를 구현하려면?
- 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 |