코루틴이란 원래 코드는 위에서부터 차례대로 실행하게 되어야 하는데 일종의 병렬처리처럼 동시에 처리 가능하도록 하는 것이다.
코루틴
public class Test : MonoBehaviour
{
void Start() // 유니티에서 게임을 키면 바로 실행되는 함수
{
StartCoroutine.(LoopA()); //코루틴을 하기 위해선 StartCoroutine을 이용해야 됨.
StartCoroutine.(LoopB()); // 이렇게 하면 번갈아가면서 실행됨.
}
}
// 코루틴을 하려면 우선 void 대신 IEnumerator를 써줘야 한다.
IEnumerator LoopA()
{
for (int i = 0; i < 100; i++)
{
print(i);
yield return new WaitForSeconds(1f); // 시간 정의하는 부분, 1f는 1초마다 실행하라는 뜻
}
}
// 코루틴 멈추기 위해서는 코루틴을 변수로 만들어준 뒤 담아줘야 한다.
public class Test : MonoBehaviour
{
Coroutine myCoroutine; // 변수로 만들어주고
void Start()
{
myCoroutine = StartCoroutine.(LoopA()); // 담아준다.
StartCoroutine(Stop()); // 멈추는 함수
}
}
// 멈추는 함수
IEnumerator Stop()
{
yield return new WaitForSeconds(2f); //멈출 시간 정의
StopCoroutine(myCoroutine); // 멈출 코루틴
}
이렇게 코루틴을 사용하고, 멈추는 코드를 작성할 수 있다.
또 다른 방법이 있다.
함수 대신 문자열로 넘길 수 있는데 연산도 더 복잡하고 파라미터도 하나만 넘길 수 있어서 함수형이 더 좋다.
변수로 만들어 쓰기
public class Test : MonoBehaviour
{
// 코루틴 선언
private IEnumerator myCoroutine;
void Start()
{
myCoroutine = LoopA(1,2,3,4,5,6); // 파라미터를 미리 넣어서 변수에 할당하고
StartCoroutine.(myCoroutine); // 변수만 넣어주면 여러번 사용할 때 파라미터 계속 입력 안해도 됨.
}
}
파라미터가 많을 때는 이렇게 해주면 여러번 안써도 되서 편하다.
모든 코루틴 멈추기
클래스 내에서 활동 중인 코루틴을 한 번에 멈출 수 있다.
IEnumerator Stop()
{
yield return new WaitForSeconds(2f);
StopAllCoroutines(); // 모든 코루틴 정지 함수
}
전처리
#을 붙이면 전처리하겠다는 뜻이다.
#region 이름
코드
#endregion 이름
이런 식으로 쓰면 축약해줄 수 있다.
※ 함께 읽으면 좋은 C# 기초
C# 무명 메소드, 람다식, Action, Func, 예외 처리 클릭!
C# 컬렉션 리스트, 큐, 스택, 해시테이블, 딕셔너리, arraylist 클릭!
'IT > 코딩' 카테고리의 다른 글
파이썬 게시판 새 글 확인 코드 (2) | 2021.12.30 |
---|---|
파이썬 bs4 네이버 뉴스 크롤링 오류 해결법 (1) | 2021.12.29 |
C# 무명 메소드, 람다식, Action, Func, 예외 처리 (0) | 2021.12.18 |
C# 인터페이스, 형식 매개 변수 T (0) | 2021.12.17 |
C# 프로퍼티 속성, 인덱서 (0) | 2021.12.16 |