유니티(Unity)에서 다양한 코루틴(Coroutine) 사용 예시
- 유니티게임개발/기초공부
- 2024. 10. 12.
유니티(Unity)에서 다양한 코루틴(Coroutine) 사용 예시
시간 지연
특정 시간 동안 대기한 후 다음 작업을 수행
public class DelayExample : MonoBehaviour
{
private void Start()
{
StartCoroutine(WaitAndPrint(2.0f)); // 2초 후 메시지 출력
}
private IEnumerator WaitAndPrint(float waitTime)
{
yield return new WaitForSeconds(waitTime);
Debug.Log("Waited for " + waitTime + " seconds.");
}
}
프레임마다 반복
매 프레임마다 특정 작업을 수행
public class FrameByFrameExample : MonoBehaviour
{
private void Start()
{
StartCoroutine(UpdateEveryFrame());
}
private IEnumerator UpdateEveryFrame()
{
while (true) // 무한 루프
{
Debug.Log("This runs every frame.");
yield return null; // 다음 프레임까지 대기
}
}
}
특정 조건에서 반복
public class ConditionExample : MonoBehaviour
{
private void Start()
{
StartCoroutine(RepeatUntilCondition());
}
private IEnumerator RepeatUntilCondition()
{
while (!SomeCondition())
{
Debug.Log("Condition not met, repeating...");
yield return new WaitForSeconds(1.0f); // 1초 대기
}
Debug.Log("Condition met!");
}
private bool SomeCondition()
{
// 예를 들어, 5초 후에 true 반환
return Time.time > 5.0f;
}
}
순차적인 작업 실행
여러 작업을 순차적으로 실행
public class SequentialExecution : MonoBehaviour
{
private void Start()
{
StartCoroutine(PerformTasks());
}
private IEnumerator PerformTasks()
{
Debug.Log("Task 1 started.");
yield return new WaitForSeconds(1.0f); // Task 1이 끝나는 시간
Debug.Log("Task 2 started.");
yield return new WaitForSeconds(1.0f); // Task 2가 끝나는 시간
Debug.Log("All tasks completed.");
}
}
애니메이션 효과
부드러운 애니메이션 효과를 만들기 위해 코루틴을 사용
public class FadeExample : MonoBehaviour
{
private void Start()
{
StartCoroutine(FadeToColor(Color.clear, 2.0f));
}
private IEnumerator FadeToColor(Color targetColor, float duration)
{
Color startColor = GetComponent<Renderer>().material.color;
float elapsedTime = 0f;
while (elapsedTime < duration)
{
GetComponent<Renderer>().material.color = Color.Lerp(startColor, targetColor, elapsedTime / duration);
elapsedTime += Time.deltaTime;
yield return null; // 다음 프레임까지 대기
}
GetComponent<Renderer>().material.color = targetColor; // 최종 색상 설정
}
}
비동기 로딩
코루틴을 사용하여 리소스를 비동기로 로드
using UnityEngine.SceneManagement;
public class LoadSceneExample : MonoBehaviour
{
private void Start()
{
StartCoroutine(LoadYourSceneAsync("YourSceneName"));
}
private IEnumerator LoadYourSceneAsync(string sceneName)
{
AsyncOperation asyncLoad = SceneManager.LoadSceneAsync(sceneName);
while (!asyncLoad.isDone)
{
Debug.Log("Loading...");
yield return null; // 다음 프레임까지 대기
}
Debug.Log("Scene loaded!");
}
}
'유니티게임개발 > 기초공부' 카테고리의 다른 글
유니티 Random 클래스 랜덤 수(Random.Range, Random.value) 사용 예시 (0) | 2024.10.15 |
---|---|
유니티(Unity) 오디오 소스(AudioSource) 플레이 함수 Play()와 PlayOneShot() 차이 (0) | 2024.10.15 |
유니티(Unity)에서 지원하는 비디오 파일 형식 (3) | 2024.10.12 |
유니티(Unity)에서 싱글톤(Singleton) 디자인 패턴 사용 예시 (0) | 2024.10.11 |
유니티(Unity)에서 오브젝트 풀(Object Pool) 의 유용성과 사용 예시 (1) | 2024.10.11 |