[Unity] 코루틴(Coroutine)이란?

2022. 5. 3. 11:50·공부/Unity
728x90

게임 플레이어가 스킬을 사용하는데, 그 스킬이 3초 후에 자동으로 꺼지는 스킬이라고 해보자.

평소에 알던 내용으로 이 스킬을 구현하려면 Update문에 스킬을 넣고, 매 프레임마다 스킬을 검사해서 3초라는 시간이 지난 것을 판단하고 그 후에 스킬을 꺼주어야 한다. 3초가 지난 것을 알기 위해 Update문을 사용한다는 것은 쓸데없는 반복이 나오는 매우 비효율적인 방법이다.

이럴 때 사용할 수 있는 것이 코루틴(Coroutine)이다. 코루틴(Coroutine)을 사용하면 내가 원하는 시기에 필요한 횟수만큼만 함수를 실행시킬 수 있으니 불필요한 행동을 하지 않게 된다.

 

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

public class CoroutineTest : MonoBehaviour
{
    Coroutine co;

    void Start()
    {
        co = StartCoroutine("StartSkill", 4.0f);
        StartCoroutine("StopSkill", 2.0f);
    }

    IEnumerator StartSkill(float time)
    {
        Debug.Log("Skill Start");
        yield return new WaitForSeconds(time);
        Debug.Log("Skill End");
        co = null;
    }

    IEnumerator StopSkill(float time)
    {
        Debug.Log("Stop Skill Start");
        yield return new WaitForSeconds(time);
        Debug.Log("Stop Skill");
        if (co != null)
        {
            StopCoroutine(co);
            co = null;
        }
    }
}

 

StartCoroutine("StopSkill", 2.0f); 을 주석처리 해놓고 유니티를 재생하면

콘솔 창에 스킬이 정상적으로 시작하고 4초 후에는 정상적으로 꺼지는 모습을 볼 수 있다. 주석을 해체하고 실행하면

Stop Skill이 Skill을 방해해서 Skill이 시작만 하고 사라지는 모습을 볼 수 있다. Stop Skill은 시작과 마무리 모두 정상이다.

728x90

'공부 > Unity' 카테고리의 다른 글

[Unity] Animator is not playing an AnimatorController  (0) 2022.05.04
[Unity] Player가 가라앉아서 움직이는 에러 해결하기  (0) 2022.05.04
[Unity] DontDestroyOnLoad()  (0) 2022.05.03
[Unity] Mathf란  (0) 2022.05.02
[Unity] ArgumentException 오류  (0) 2022.05.02
'공부/Unity' 카테고리의 다른 글
  • [Unity] Animator is not playing an AnimatorController
  • [Unity] Player가 가라앉아서 움직이는 에러 해결하기
  • [Unity] DontDestroyOnLoad()
  • [Unity] Mathf란
돌멩이수프
돌멩이수프
Information technology
  • 돌멩이수프
    WHAT DOES "IT" STAND FOR?
    돌멩이수프
  • 전체
    오늘
    어제
    • 분류 전체보기 (239)
      • 언어 (73)
        • html (3)
        • css (1)
        • java (6)
        • C (26)
        • C++ (2)
        • C# (29)
      • 공부 (7)
        • Unity (43)
        • 게임 서버 (26)
        • 네트워크 (5)
        • 데이터베이스 (7)
        • EFCore (19)
        • 기타 (14)
        • Git (5)
        • 운영체제 (1)
        • 소프트웨어공학 (21)
      • 2024-여름 (12)
      • 자기 관리 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    게임서버
    C#
    Entityfamework
    java
    디자인패턴
    유니티
    EntityFramework
    백준
    자바
    EFCore
    코딩
    Python
    C
    C언어
    HTML
    네트워크
    라즈베리파이
    tcp
    unity
    coding
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
돌멩이수프
[Unity] 코루틴(Coroutine)이란?
상단으로

티스토리툴바